Dostawcy sesji logowania jednokrotnego w usłudze Azure Active Directory B2C

W artykule Konfigurowanie zachowania sesji w usłudze Azure Active Directory B2C opisano zarządzanie sesjami dla zasad niestandardowych usługi Azure AD B2C. W tym artykule opisano sposób dalszego konfigurowania zachowania logowania jednokrotnego dla dowolnego profilu technicznego w ramach zasad niestandardowych.

Można na przykład skonfigurować zasady dla logowania jednokrotnego dla całej dzierżawy, ale zawsze chcesz wykonać krok wieloskładnikowy niezależnie od aktywnej sesji logowania jednokrotnego. To zachowanie można osiągnąć, konfigurując dostawcę sesji profilu technicznego wieloskładnikowego.

Dostawców sesji można zastosować do dwóch przepływów:

  • Nowe logowanie
    • Gdy użytkownik loguje się po raz pierwszy, nie ma sesji. Wszystkie profile techniczne korzystające z dostawcy sesji stają się uczestnikiem sesji.
    • Dostawca sesji może zapisywać oświadczenia do pliku cookie sesji.
  • Kolejne logowania
    • Gdy użytkownik ma aktywną sesję, oświadczenia, które są częścią pliku cookie sesji są odczytywane w worku oświadczenia.
    • Nie można zaktualizować oświadczeń, które są częścią pliku cookie sesji.
    • Dostawca sesji może wydać dodatkowe oświadczenia do torby oświadczenia wskazujące, że ten profil techniczny został wykonany w warunkach logowania jednokrotnego.
    • Profil techniczny można pominąć.

W zależności od dostawcy zarządzania sesjami wybranego dla danego profilu technicznego zachowanie sesji może być aktywne lub pomijane. Poniższa lista przedstawia niektóre z wielu możliwych przykładów przy użyciu dostawców sesji:

  • Zapobiegaj lub wymuszaj przerwy w działaniu interfejsu użytkownika podczas kolejnych logowania (SSO).
  • Zapamiętaj wybranego dostawcę tożsamości podczas kolejnych logów (SSO).
  • Zmniejsz liczbę operacji odczytu do katalogu podczas kolejnych logowania (SSO).
  • Śledzenie sesji dostawcy tożsamości społecznościowych w celu wylogowania dostawcy tożsamości.
  • Śledzenie zalogowanych aplikacji jednostki uzależnionej na potrzeby wylogowania jednokrotnego.

Dostawcy sesji

Istnieje pięciu dostawców sesji dostępnych do zarządzania sposobem obsługi sesji logowania jednokrotnego przez profil techniczny. Podczas konfigurowania profilu technicznego należy wybrać najbardziej odpowiedniego dostawcę sesji.

W poniższej tabeli przedstawiono dostawcę sesji do użycia w zależności od typu profilu technicznego, którym chcesz zarządzać. Niektórzy dostawcy sesji zezwalają na odczytywanie i zapisywanie oświadczeń do pliku cookie sesji.

Dostawca sesji Odpowiednie typy profilów technicznych Przeznaczenie Zapisywanie oświadczeń Odczytywanie oświadczeń
DefaultSSOSessionProvider Self-asserted, Microsoft Entra ID, Microsoft Entra uwierzytelnianie wieloskładnikowe, transformacja oświadczeń Pomija wykonywanie profilu technicznego. Tak Tak
ExternalLoginSSOSessionProvider Dostawca tożsamości OAuth1, dostawca tożsamości Oauth2, dostawca tożsamości OpenID Connect, dostawca tożsamości SAML Przyspieszanie wybierania dostawcy tożsamości strony. Wykonywanie jednokrotnego wylogowywanie. Tak Tak
OAuthSSOSessionProvider Wystawca tokenu JWT Zarządza sesją między jednostkami uzależnionymi OAuth2 lub OpenId Connect i Azure AD B2C. Wykonuje jednokrotne wylogowanie. Nie Nie
SamlSSOSessionProvider Wystawca tokenu SAML Zarządza sesją między jednostkami uzależnionymi SAML i Azure AD B2C. Wykonuje jednokrotne wylogowanie. Nie Nie
NoopSSOSessionProvider Dowolne Pomijanie dowolnego profilu technicznego w ramach sesji. Nie Nie

Na poniższym diagramie przedstawiono typy sesji używane przez Azure AD B2C.

Diagram przedstawiający typy Azure AD dostawcy sesji B2C.

Odwoływanie się do dostawcy sesji

Aby użyć dostawcy sesji w profilu technicznym:

  1. Utwórz odpowiedni profil techniczny zarządzania sesjami. Należy pamiętać, że pakiet startowy Azure AD B2C zawiera najbardziej typowe profile techniczne zarządzania sesjami. Jeśli ma to zastosowanie, możesz odwoływać się do istniejącego profilu technicznego zarządzania sesjami.

    Poniższy fragment kodu XML przedstawia profil techniczny zarządzania sesjami pakietu SM-AAD startowego. Podać sesję jest typem DefaultSSOSessionProvider.

    <TechnicalProfile Id="SM-AAD">
      <DisplayName>Session Mananagement Provider</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <PersistedClaims>
        <PersistedClaim ClaimTypeReferenceId="objectId" />
        <PersistedClaim ClaimTypeReferenceId="signInName" />
        <PersistedClaim ClaimTypeReferenceId="authenticationSource" />
        <PersistedClaim ClaimTypeReferenceId="identityProvider" />
        <PersistedClaim ClaimTypeReferenceId="newUser" />
        <PersistedClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" />
      </PersistedClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true" />
      </OutputClaims>
    </TechnicalProfile>
    
  2. Odwoływanie się do profilu technicznego zarządzania sesjami w profilu technicznym. Dzięki temu można kontrolować zachowanie tego profilu technicznego podczas kolejnych logowania (SSO).

    Aby odwołać się do profilu technicznego zarządzania sesjami z profilu technicznego UseTechnicalProfileForSessionManagement , dodaj element . W poniższym przykładzie pokazano użycie profilu technicznego SM-AAD zarządzania sesjami. ReferenceId Zmień wartość na identyfikator profilu technicznego zarządzania sesją.

    <TechnicalProfile Id="{Technical-profile-ID}">
      ...
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
    </TechnicalProfile>
    

Ważne

Jeśli profil techniczny nie odwołuje się do żadnego dostawcy zarządzania sesjami, zostanie zastosowany dostawca sesji DefaultSSOSessionProvider , co może spowodować nieoczekiwane zachowanie.

Uwaga

Podczas przepływu tokenu odświeżania dostawcy zarządzania sesjami nie są wywoływani. Wszystkie próby wystawienia nowego tokenu dostępu to kopia oryginalnych oświadczeń wystawionych.

Zarządzanie oświadczeniami sesji

Profile techniczne zarządzania sesjami kontrolują, które oświadczenia mogą być odczytywane, zapisywane lub wyjściowe podczas wykonywania zasad niestandardowych.

W ramach profilu technicznego zarządzania sesjami użyj elementów PersistedClaims i OutputClaims do zarządzania oświadczeniami.

  • Oświadczenia utrwalone — oświadczenia , które mogą być zapisywane w pliku cookie sesji.
    • Aby oświadczenie zostało zapisane w pliku cookie sesji, musi być częścią bieżącej torby oświadczenia.
    • Wszystkie oświadczenia, które są zapisywane automatycznie, zwracają podczas kolejnych logów (logowanie jednokrotne). Nie trzeba określać oświadczeń wyjściowych.
  • Oświadczenia wyjściowe — dodatkowe oświadczenia, które mogą być danymi wyjściowymi torby oświadczenia podczas kolejnych logowania (logowanie jednokrotne). Ponieważ oświadczenia wyjściowe nie są zwracane z sesji, należy ustawić wartość domyślną.

Elementy utrwalionych i wyjściowych oświadczeń przedstawiono w poniższym fragmencie kodu XML:

<TechnicalProfile Id="SM-AAD">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true"/>
  </OutputClaims>
</TechnicalProfile>

DefaultSSOSessionProvider Dostawcy zarządzania sesjami i ExternalLoginSSOSessionProvider mogą być skonfigurowani do zarządzania oświadczeniami, tak aby podczas wykonywania następujących czynności:

  • Nowe logowanie
    • Element PersistedClaims zapisze oświadczenia w pliku cookie sesji. Utrwalone oświadczenia nie mogą zostać przepisane.
  • Kolejne logowania
    • Każde oświadczenie, które jest zapisywane w pliku cookie sesji, będzie dane wyjściowe w torbie oświadczeń, które będą dostępne do użycia w następnym kroku aranżacji.
    • Element OutputClaims zwróci statyczne oświadczenia do torby oświadczeń. Użyj atrybutu DefaultValue , aby ustawić wartość oświadczenia wyjściowego.

DefaultSSOSessionProvider

DefaultSSOSessionProvider Dostawca sesji można skonfigurować do zarządzania oświadczeniami podczas kolejnych logowania (logowanie jednokrotne) i zezwalać na pomijanie profilów technicznych. DefaultSSOSessionProvider Element powinien być używany do utrwalania i wystawiania oświadczeń, które są wymagane przez kolejne kroki orkiestracji, które nie zostaną uzyskane podczas kolejnych logowania (logowanie jednokrotne). Na przykład oświadczenia, które mogą zostać uzyskane z odczytu obiektu użytkownika z katalogu.

Poniższy SM-AAD profil techniczny jest typem dostawcy DefaultSSOSessionProvider sesji. SM-AAD Profil techniczny można znaleźć w niestandardowym pakiecie startowym zasad.

<TechnicalProfile Id="SM-AAD">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
    <PersistedClaim ClaimTypeReferenceId="signInName" />
    <PersistedClaim ClaimTypeReferenceId="authenticationSource" />
    <PersistedClaim ClaimTypeReferenceId="identityProvider" />
    <PersistedClaim ClaimTypeReferenceId="newUser" />
    <PersistedClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true"/>
  </OutputClaims>
</TechnicalProfile>

Na przykład SM-AADprofil techniczny zarządzania sesjami używa dostawcy DefaultSSOSessionProvider sesji. Będzie ona zachowywać się w następujący sposób w przypadku zastosowania względem profilu technicznego z niestandardowego SelfAsserted-LocalAccountSignin-Emailpakietu początkowego zasad:

  • Nowe logowanie
    • signInName zostanie zapisany w pliku cookie sesji, ponieważ profil techniczny zarządzania sesjami (SM-AAD) jest skonfigurowany signInName do utrwalania, a profil techniczny odwołujące się do sm-AAD zawiera element OutputClaim dla signInName. To zachowanie ma zastosowanie do wszystkich oświadczeń spełniających ten wzorzec.
  • Kolejne logowania
    • Profil techniczny zostanie pominięty i użytkownik nie będzie widzieć strony logowania.
    • Torba oświadczenia będzie zawierać signInName wartość z pliku cookie sesji, który został utrwalone podczas nowego logowania, i wszelkie inne oświadczenia, które spełniają wzorzec, który ma zostać utrwalone w pliku cookie sesji.
    • Profil techniczny zarządzania sesjami zwraca objectIdFromSession oświadczenie, ponieważ Output oświadczenia dostawcy sesji są przetwarzane podczas kolejnych logowania (logowanie jednokrotne). W takim przypadku objectIdFromSession oświadczenie obecne w worku oświadczenia wskazuje, że oświadczenia użytkownika pochodzą z pliku cookie sesji z powodu logowania jednokrotnego.

ExternalLoginSSOSessionProvider

ExternalLoginSSOSessionProvider Dostawca sesji służy do pomijania ekranu "wybór dostawcy tożsamości" i wylogowywanie się z dostawcy tożsamości federacyjnej. Zazwyczaj odwołuje się on do profilu technicznego skonfigurowanego dla dostawcy tożsamości federacyjnej, takiego jak Facebook lub identyfikator Microsoft Entra.

  • Nowe logowanie
    • Element PersistedClaims zapisze oświadczenia w pliku cookie sesji. Utrwalone oświadczenia nie mogą zostać przepisane.
  • Kolejne logowania
    • Każde oświadczenie, które jest zapisywane w pliku cookie sesji, będzie wyprowadzane do torby oświadczenia, dostępne do użycia w następnym kroku aranżacji.
    • Element OutputClaims wyświetli statyczne oświadczenia do torby oświadczeń. Użyj atrybutu DefaultValue , aby ustawić wartość oświadczenia.
    • Gdy profil techniczny, który odwołuje się do profilu technicznego zarządzania sesjami, zawiera OutputClaimelement , który został utrwalone w pliku cookie sesji, ten profil techniczny zostanie pominięty.

Poniższy SM-SocialLogin profil techniczny jest typem dostawcy ExternalLoginSSOSessionProvider sesji. SM-SocialLogin Profil techniczny można znaleźć w niestandardowym pakiecie startowym zasad.

<TechnicalProfile Id="SM-SocialLogin">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.ExternalLoginSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="AlternativeSecurityId" />
  </PersistedClaims>
</TechnicalProfile>

Oświadczenie AlternativeSecurityId jest generowane, gdy użytkownik loguje się za pomocą zewnętrznego dostawcy tożsamości. Reprezentowanie unikatowego identyfikatora użytkownika zewnętrznego dostawcy tożsamości. Oświadczenie AlternativeSecurityId jest utrwalane w taki sposób, że w przypadku logowania jednokrotnego profil użytkownika może być odczytywany z katalogu bez interakcji z dostawcą tożsamości federacyjnej.

Aby skonfigurować dostawcę sesji zewnętrznej, dodaj odwołanie do SM-SocialLogin profilu technicznego OAuth1, OAuth2 lub OpenID Connect. Na przykład Facebook-OAUTH używa profilu technicznego zarządzania sesjami SM-SocialLogin . Aby uzyskać więcej informacji, zobacz niestandardowy pakiet startowy zasad.

<TechnicalProfile Id="Facebook-OAUTH">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
</TechnicalProfile>

OAuthSSOSessionProvider

OAuthSSOSessionProvider Dostawca sesji służy do zarządzania sesjami Azure AD B2C między jednostkami uzależnionymi OAuth2 lub OpenId Connect i Azure AD B2C. Azure AD B2C obsługuje wylogowanie jednokrotne, znane również jako single Log-Out (SLO). Gdy użytkownik wyloguje się za pośrednictwem punktu końcowego wylogowania Azure AD B2C, Azure AD B2C wyczyści plik cookie sesji użytkownika z przeglądarki. Jednak użytkownik może nadal być zalogowany do innych aplikacji, które używają Azure AD B2C do uwierzytelniania.

Ten typ dostawcy sesji umożliwia Azure AD B2C śledzenie wszystkich aplikacji OAuth2 lub OpenId Connect zalogowanych przez użytkownika. Podczas wylogowania jednej aplikacji Azure AD B2C podejmie próbę logout wywołania punktów końcowych wszystkich innych znanych zalogowanych aplikacji. Ta funkcja jest wbudowana w dostawcę sesji. Nie można skonfigurować żadnych utrwalanych ani wyjściowych oświadczeń. Poniższy SM-jwt-issuer profil techniczny jest typem dostawcy OAuthSSOSessionProvider sesji.

<TechnicalProfile Id="SM-jwt-issuer">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.OAuthSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</TechnicalProfile>

Profil SM-jwt-issuer techniczny jest przywołyyny z profilu technicznego JwtIssuer :

<TechnicalProfile Id="JwtIssuer">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-jwt-issuer" />
</TechnicalProfile>

SamlSSOSessionProvider

SamlSSOSessionProvider Dostawca sesji służy do zarządzania zachowaniem sesji za pomocą federacyjnych dostawców tożsamości SAML lub aplikacji jednostki uzależnionej SAML i Azure AD B2C.

Zarządzanie sesjami dostawcy tożsamości SAML

Jeśli odwołujesz się do SamlSSOSessionProvider dostawcy sesji sesji dostawcy tożsamości SAML, RegisterServiceProviders należy ustawić wartość false.

Następujący SM-Saml-idp profil techniczny jest typem dostawcy SamlSSOSessionProvider sesji:

<TechnicalProfile Id="SM-Saml-idp">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="RegisterServiceProviders">false</Item>
  </Metadata>
</TechnicalProfile>

Aby użyć profilu technicznego SM-Saml-idp zarządzania sesjami, dodaj odwołanie do profilu technicznego dostawcy tożsamości SAML . Na przykład dostawca Contoso-SAML2tożsamości SAML usług AD-FS używa profilu technicznego zarządzania sesjamiSM-Saml-idp.

<TechnicalProfile Id="Contoso-SAML2">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp" />
</TechnicalProfile>

Zarządzanie sesjami dostawcy usług SAML

Podczas odwoływania SamlSSOSessionProvider się do dostawcy sesji sesji jednostki uzależnionej RegisterServiceProviders SAML należy ustawić wartość true. Wylogowywanie sesji SAML wymaga SessionIndex wykonania operacji i NameID .

Następujący SM-Saml-issuer profil techniczny jest typem dostawcy SamlSSOSessionProvider sesji:

<TechnicalProfile Id="SM-Saml-issuer">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</TechnicalProfile>

Aby użyć profilu technicznego zarządzania sesjami, dodaj odwołanie do profilu technicznego SM-Saml-issuerwystawcy tokenu SAML . Na przykład Saml2AssertionIssuer profil techniczny używa profilu technicznego zarządzania sesjami SM-Saml-issuer .

<TechnicalProfile Id="Saml2AssertionIssuer">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-issuer" />
</TechnicalProfile>

Metadane

Atrybut Wymagane Opis
IncludeSessionIndex Nie Obecnie nie można ich zignorować.
RegisterServiceProviders Nie Wskazuje, że dostawca powinien zarejestrować wszystkich dostawców usług SAML, którzy zostali wystawieni asercji. Możliwe wartości: true (wartość domyślna) lub false.

NoopSSOSessionProvider

NoopSSOSessionProvider Dostawca sesji służy do pomijania zachowania logowania jednokrotnego. Profile techniczne korzystające z tego typu dostawcy sesji będą zawsze przetwarzane, nawet jeśli użytkownik ma aktywną sesję. Ten typ dostawcy sesji może być przydatny, aby wymusić uruchamianie określonych profilów technicznych, na przykład:

  • Przekształcanie oświadczeń — aby utworzyć lub przekształcić oświadczenia, które są później używane do określania kroków aranżacji do przetworzenia lub pominięcia.
  • Restful — pobieranie zaktualizowanych danych z usługi Restful za każdym razem, gdy zasady są uruchamiane. Możesz również wywołać funkcję Restful na potrzeby rejestrowania rozszerzonego i inspekcji.
  • Samozwańcza — wymuszaj, aby użytkownik dostarczał dane za każdym razem, gdy zasady są uruchamiane. Na przykład zweryfikuj wiadomości e-mail z jednorazowym kodem dostępu lub poproś użytkownika o zgodę.
  • Phonefactor — wymuszaj na użytkowniku wykonywanie uwierzytelniania wieloskładnikowego w ramach "uwierzytelniania zintensyfikowanego", nawet podczas kolejnych logowania (logowanie jednokrotne).

Ten typ dostawcy sesji nie utrwala oświadczeń do pliku cookie sesji użytkownika. Poniższy SM-Noop profil techniczny jest typem dostawcy NoopSSOSessionProvider sesji. SM-Noop Profil techniczny można znaleźć w niestandardowym pakiecie startowym zasad.

<TechnicalProfile Id="SM-Noop">
  <DisplayName>Noop Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.NoopSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</TechnicalProfile>

Aby pominąć zachowanie logowania jednokrotnego profilu technicznego, dodaj odwołanie do SM-Noop profilu technicznego. Na przykład AAD-Common używa profilu technicznego zarządzania sesjami SM-Noop . Aby uzyskać więcej informacji, zobacz niestandardowy pakiet startowy zasad.

<TechnicalProfile Id="AAD-Common">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Następne kroki

Dowiedz się, jak skonfigurować zachowanie sesji.