Udostępnij za pośrednictwem


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 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ć wieloskładnikowy krok 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. Wszelkie 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 torbie 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świadczeń, wskazując, ż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 interfejsie 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ęć 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, który ma być używany 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 Purpose Zapisywanie oświadczeń Odczytywanie oświadczeń
DefaultSSOSessionProvider Self-asserted, Microsoft Entra ID, Microsoft Entra multifactor authentication, Claims transformation 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 Strona przyspieszania wyboru dostawcy tożsamości. Wykonywanie logowania jednokrotnego. 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 a usługą 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 usługę Azure AD B2C.

Diagram przedstawiający typy dostawców sesji usługi Azure AD B2C.

Odwoływanie się do dostawcy sesji

Aby użyć dostawcy sesji w profilu technicznym:

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

    Poniższy fragment kodu XML przedstawia profil techniczny zarządzania sesjami pakietu początkowego SM-AAD . Podaj parametr sesji 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łuj się do profilu technicznego zarządzania sesjami w profilu technicznym. W ten sposób kontrolujesz zachowanie tego profilu technicznego podczas kolejnych logowania (SSO).

    Aby odwołać się do profilu technicznego zarządzania sesjami z profilu technicznego, dodaj UseTechnicalProfileForSessionManagement 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 sesjami.

    <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 profilu technicznym zarządzania sesjami użyj elementów PersistedClaims i OutputClaims do zarządzania oświadczeniami.

  • Oświadczenia utrwalone — oświadczenia , które można zapisać 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 zapisywane automatycznie zwracają się 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ć wyjściowe do torby oświadczenia podczas kolejnych logowania (logowanie jednokrotne). Ponieważ oświadczenia wyjściowe nie są zwracane z sesji, należy ustawić wartość domyślną.

Utrwalone i wyjściowe elementy oświadczeń są pokazane w następującym 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 można skonfigurować 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 zapisane w pliku cookie sesji będzie dane wyjściowe do torby oświadczeń, które będą dostępne do użycia w następnym kroku aranżacji.
    • Element OutputClaims zwróci oświadczenia statyczne 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. Element DefaultSSOSessionProvider powinien być używany do utrwalania i wystawiania oświadczeń, które są wymagane przez kolejne kroki orkiestracji, które nie zostaną uzyskane w inny sposób 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. Profil SM-AAD 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 działać w następujący sposób w przypadku zastosowania względem profilu technicznego SelfAsserted-LocalAccountSignin-Email z niestandardowego pakietu startowego 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 jest pomijany, a 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łniły 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

Dostawca ExternalLoginSSOSessionProvider sesji służy do pomijania ekranu wyboru dostawcy tożsamości i wylogowania się z dostawcy tożsamości federacyjnej. Zazwyczaj odwołuje się do niego profil techniczny skonfigurowany dla dostawcy tożsamości federacyjnej, takiego jak Facebook lub Microsoft Entra ID.

  • Nowe logowanie
    • Element PersistedClaims zapisze oświadczenia w pliku cookie sesji. Utrwalone oświadczenia nie mogą zostać przepisane.
  • Kolejne logowania
    • Każde oświadczenie zapisane w pliku cookie sesji będzie zwracane do torby oświadczenia, dostępne do użycia w następnym kroku aranżacji.
    • Element OutputClaims zwróci oświadczenia statyczne do torby oświadczeń. Użyj atrybutu DefaultValue , aby ustawić wartość oświadczenia.
    • Jeśli 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. Profil SM-SocialLogin 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 podczas logowania jednokrotnego profil użytkownika może być odczytywany z katalogu bez interakcji z dostawcą tożsamości federacyjnej.

Aby skonfigurować zewnętrznego dostawcę sesji, dodaj odwołanie do SM-SocialLogin z profilów technicznych OAuth1, OAuth2 lub OpenID Connect . Na przykład używa Facebook-OAUTH 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

Dostawca OAuthSSOSessionProvider sesji służy do zarządzania sesjami usługi Azure AD B2C między jednostkami uzależnionymi OAuth2 lub OpenId Connect i Azure AD B2C. Usługa 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 usługi Azure AD B2C, usługa 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ą usługi Azure AD B2C do uwierzytelniania.

Ten typ dostawcy sesji umożliwia usłudze Azure AD B2C śledzenie wszystkich aplikacji OAuth2 lub OpenId Connect zalogowanych przez użytkownika. Podczas wylogowywanie jednej aplikacji usługa 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 utrwałych lub 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łyny z profilu technicznego JwtIssuer :

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

SamlSSOSessionProvider

Dostawca SamlSSOSessionProvider 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 usługi Azure AD B2C.

Zarządzanie sesjami dostawcy tożsamości SAML

Jeśli odwołujesz się do SamlSSOSessionProvider dostawcy sesji z sesji dostawcy tożsamości SAML, musi być ustawiona RegisterServiceProviders 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-SAML2 tożsamości SAML usług AD-FS używa profilu technicznego SM-Saml-idp zarządzania sesjami.

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

Zarządzanie sesjami dostawcy usług SAML

W przypadku odwoływania SamlSSOSessionProvider się do dostawcy sesji w celu zarządzania sesją RegisterServiceProviders jednostki uzależnionej SAML należy ustawić wartość true. Wylogowywanie sesji SAML wymaga wykonania polecenia SessionIndex 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-issuer wystawcy tokenu SAML. Na przykład Saml2AssertionIssuer profil techniczny używa profilu technicznego SM-Saml-issuer zarządzania sesjami.

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

Metadane

Atrybut Wymagania opis
IncludeSessionIndex Nie. Obecnie nie można go 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

Dostawca NoopSSOSessionProvider 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 rozszerzonego rejestrowania i inspekcji.
  • Self-asserted — wymusza, 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 — wymuś, aby użytkownik wykonywał uwierzytelnianie wieloskładnikowe w ramach "uwierzytelniania intensymenta", 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. Profil SM-Noop 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 używa AAD-Common 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.