Konfigurowanie zachowania sesji w usłudze Azure Active Directory B2C

Przed rozpoczęciem użyj selektora Wybierz typ zasad, aby wybrać typ konfigurowanych zasad. Usługa Azure Active Directory B2C oferuje dwie metody definiowania sposobu interakcji użytkowników z aplikacjami: za pomocą wstępnie zdefiniowanych przepływów użytkowników lub w pełni konfigurowalnych zasad niestandardowych. Kroki wymagane w tym artykule są różne dla każdej metody.

Logowanie jednokrotne (SSO) zwiększa bezpieczeństwo i wygodę podczas logowania użytkowników między aplikacjami w usłudze Azure Active Directory B2C (Azure AD B2C). W tym artykule opisano metody logowania jednokrotnego używane w usłudze Azure AD B2C i ułatwiają wybór najbardziej odpowiedniej metody logowania jednokrotnego podczas konfigurowania zasad.

Po zalogowaniu jednokrotnym użytkownicy logować się raz przy użyciu jednego konta i uzyskiwać dostęp do wielu aplikacji. Aplikacja może być aplikacją internetową, mobilną lub jednostronicową, niezależnie od nazwy platformy lub domeny.

Gdy użytkownik początkowo loguje się do aplikacji, usługa Azure AD B2C utrzymuje sesję opartą na plikach cookie. Po kolejnych żądaniach uwierzytelniania usługa Azure AD B2C odczytuje i weryfikuje sesję opartą na plikach cookie oraz wystawia token dostępu bez monitowania użytkownika o ponowne zalogowanie. Jeśli sesja oparta na plikach cookie wygaśnie lub stanie się nieprawidłowa, zostanie wyświetlony monit o ponowne zalogowanie się.

Wymagania wstępne

Omówienie sesji usługi Azure AD B2C

Integracja z usługą Azure AD B2C obejmuje trzy typy sesji logowania jednokrotnego:

  • Azure AD B2C — sesja zarządzana przez usługę Azure AD B2C
  • Dostawca tożsamości federacyjnej — sesja zarządzana przez dostawcę tożsamości, na przykład Konto Facebook, Salesforce lub Microsoft
  • Aplikacja — sesja zarządzana przez aplikację internetową, mobilną lub jednostronicową

SSO session

Sesja usługi Azure AD B2C

Gdy użytkownik pomyślnie uwierzytelnia się przy użyciu konta lokalnego lub społecznościowego, usługa Azure AD B2C przechowuje sesję opartą na plikach cookie w przeglądarce użytkownika. Plik cookie jest przechowywany w ramach nazwy domeny dzierżawy usługi Azure AD B2C, takiej jak https://contoso.b2clogin.com.

Gdy użytkownik loguje się przy użyciu konta federacyjnego, uruchamia się przedział czasu sesji, znany również jako czas wygaśnięcia (TTL). Jeśli użytkownik zaloguje się do tej samej lub innej aplikacji w tym czasie wygaśnięcia, usługa Azure AD B2C podejmie próbę uzyskania nowego tokenu dostępu od dostawcy tożsamości federacyjnej. Jeśli sesja federacyjnego dostawcy tożsamości wygasła lub jest nieprawidłowa, dostawca tożsamości federacyjnej monituje użytkownika o podanie poświadczeń. Jeśli sesja użytkownika jest w toku lub jeśli użytkownik jest zalogowany przy użyciu konta lokalnego zamiast federacyjnego, usługa Azure AD B2C autoryzuje użytkownika i uniemożliwia dalsze monity.

Możesz skonfigurować zachowanie sesji, w tym czas wygaśnięcia sesji oraz sposób, w jaki usługa Azure AD B2C udostępnia sesję między zasadami i aplikacjami.

Sesja dostawcy tożsamości federacyjnej

Dostawca tożsamości społecznościowych lub przedsiębiorstwa zarządza własną sesją. Plik cookie jest przechowywany pod nazwą domeny dostawcy tożsamości, na przykład https://login.salesforce.com. Usługa Azure AD B2C nie kontroluje sesji federacyjnego dostawcy tożsamości. Zamiast tego zachowanie sesji jest określane przez dostawcę tożsamości federacyjnej.

Rozważmy następujący scenariusz:

  1. Użytkownik loguje się do Facebooka, aby sprawdzić swoje źródło danych.
  2. Później użytkownik otworzy aplikację i rozpocznie proces logowania. Aplikacja przekierowuje użytkownika do usługi Azure AD B2C, aby ukończyć proces logowania.
  3. Na stronie rejestracji lub logowania w usłudze Azure AD B2C użytkownik decyduje się zalogować przy użyciu swojego konta w serwisie Facebook. Użytkownik jest przekierowywany do serwisu Facebook. Jeśli w serwisie Facebook jest aktywna sesja, użytkownik nie zostanie poproszony o podanie swoich poświadczeń i zostanie natychmiast przekierowany do usługi Azure AD B2C przy użyciu tokenu serwisu Facebook.

Sesja aplikacji

Token dostępu OAuth2, token identyfikatora lub token SAML może chronić aplikację internetową, mobilną lub jednostronicową. Gdy użytkownik próbuje uzyskać dostęp do chronionego zasobu w aplikacji, aplikacja sprawdza, czy po stronie aplikacji jest aktywna sesja. Jeśli sesja aplikacji nie istnieje lub sesja wygaśnie, aplikacja kieruje użytkownika do strony logowania usługi Azure AD B2C.

Sesja aplikacji może być sesją opartą na plikach cookie przechowywaną pod nazwą domeny aplikacji, taką jak https://contoso.com. Aplikacje mobilne mogą przechowywać sesję w inny sposób, ale przy użyciu podobnego podejścia.

Konfigurowanie zachowania sesji usługi Azure AD B2C

Możesz skonfigurować zachowanie sesji usługi Azure AD B2C, w tym:

  • Okres istnienia sesji aplikacji internetowej (w minutach) — czas przechowywania pliku cookie sesji usługi Azure AD B2C w przeglądarce użytkownika po pomyślnym uwierzytelnieniu. Okres istnienia sesji można ustawić do 24 godzin.

  • Limit czasu sesji aplikacji internetowej — wskazuje, jak sesja jest rozszerzona przez ustawienie okresu istnienia sesji lub ustawienie Nie wylogowuj mnie (KMSI).

    • Rolling — wskazuje, że sesja jest rozszerzana za każdym razem, gdy użytkownik wykonuje uwierzytelnianie oparte na plikach cookie (ustawienie domyślne).
    • Bezwzględne — wskazuje, że użytkownik jest zmuszony do ponownego uwierzytelnienia po określonym przedziale czasu.
  • Konfiguracja logowania jednokrotnego — sesja usługi Azure AD B2C można skonfigurować przy użyciu następujących zakresów:

    • Dzierżawa — to ustawienie jest domyślne. Użycie tego ustawienia umożliwia wielu aplikacjom i przepływom użytkowników w dzierżawie usługi B2C współużytkowania tej samej sesji użytkownika. Na przykład po zalogowaniu się użytkownika do aplikacji użytkownik może również bezproblemowo zalogować się do innej aplikacji po jej uzyskaniu.
    • Aplikacja — to ustawienie umożliwia zachowanie sesji użytkownika wyłącznie dla aplikacji, niezależnie od innych aplikacji. Możesz na przykład użyć tego ustawienia, jeśli chcesz, aby użytkownik zalogował się do firmy Contoso Pharmacy niezależnie od tego, czy użytkownik jest już zalogowany do firmy Contoso Groceries.
    • Zasady — to ustawienie umożliwia zachowanie sesji użytkownika wyłącznie dla przepływu użytkownika niezależnie od aplikacji. Na przykład usługa Azure AD B2C udziela użytkownikowi dostępu do części zabezpieczeń wyższych zabezpieczeń wielu aplikacji, jeśli użytkownik już się zalogował i wykonał krok uwierzytelniania wieloskładnikowego (MFA). Ten dostęp będzie kontynuowany, o ile sesja skojarzona z przepływem użytkownika pozostaje aktywna.
    • Pominięte — to ustawienie wymusza, aby użytkownik przechodził przez cały przepływ użytkownika po każdym wykonaniu zasad.

Konfigurowanie przepływu użytkownika

Aby skonfigurować zachowanie sesji w przepływie użytkownika, wykonaj następujące kroki:

  1. Zaloguj się w witrynie Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.
  4. Wybierz pozycję Przepływy użytkownika.
  5. Otwórz utworzony wcześniej przepływ użytkownika.
  6. Wybierz Właściwości.
  7. Skonfiguruj okres istnienia sesji aplikacji internetowej (w minutach), limit czasu sesji aplikacji internetowej, konfigurację logowania jednokrotnego i wymagaj tokenu identyfikatora w żądaniach wylogowywanie zgodnie z potrzebami.
  8. Kliknij przycisk Zapisz.

Konfigurowanie zasad niestandardowych

Aby skonfigurować zachowanie sesji w zasadach niestandardowych, wykonaj następujące kroki:

  1. Otwórz plik jednostki uzależnionej (RP), na przykład SignUpOrSignin.xml

  2. Jeśli jeszcze nie istnieje, dodaj następujący <UserJourneyBehaviors> element do <RelyingParty> elementu . Musi znajdować się natychmiast po <DefaultUserJourney ReferenceId="UserJourney Id"/>.

    <UserJourneyBehaviors>
      <SingleSignOn Scope="Application" />
      <SessionExpiryType>Absolute</SessionExpiryType>
      <SessionExpiryInSeconds>86400</SessionExpiryInSeconds>
    </UserJourneyBehaviors>
    

    Po dodaniu elementów RelyingParty zachowania podróży użytkownika element powinien wyglądać podobnie do następującego przykładu:

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <UserJourneyBehaviors>
        <SingleSignOn Scope="Application" />
        <SessionExpiryType>Absolute</SessionExpiryType>
        <SessionExpiryInSeconds>86400</SessionExpiryInSeconds>
      </UserJourneyBehaviors>
      <TechnicalProfile Id="PolicyProfile">
        <DisplayName>PolicyProfile</DisplayName>
        <Protocol Name="OpenIdConnect" />
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="displayName" />
          <OutputClaim ClaimTypeReferenceId="givenName" />
          ...
        </OutputClaims>
        <SubjectNamingInfo ClaimType="sub" />
      </TechnicalProfile>
    </RelyingParty>
    
  3. Zmień wartość atrybutu Scope na jedną z możliwych wartości: Suppressed, , TenantApplicationlub Policy. Aby uzyskać więcej informacji, zapoznaj się z artykułem dokumentacji jednostki uzależnionej.

  4. SessionExpiryType Ustaw element na Rolling lub Absolute. Aby uzyskać więcej informacji, zapoznaj się z artykułem dokumentacji jednostki uzależnionej.

  5. SessionExpiryInSeconds Ustaw element na wartość liczbową z zakresu od 900 sekund (15 minut) do 86 400 sekund (24 godziny). Aby uzyskać więcej informacji, zapoznaj się z artykułem dokumentacji jednostki uzależnionej.

Włącz opcję Nie wylogowuj mnie (KMSI)

Funkcję KMSI można włączyć dla użytkowników aplikacji internetowych i natywnych, którzy mają konta lokalne w katalogu usługi Azure AD B2C. Po włączeniu tej funkcji użytkownicy mogą zdecydować się na pozostanie zalogowanym, aby sesja pozostała aktywna po zamknięciu przeglądarki. Sesja jest utrzymywana przez ustawienie trwałego pliku cookie. Użytkownicy, którzy wybierają usługę KMSI, mogą ponownie otworzyć przeglądarkę bez monitowania o ponowne wprowadzenie nazwy użytkownika i hasła. Ten dostęp (trwały plik cookie) jest odwoływalony po wylogowaniu użytkownika. Aby uzyskać więcej informacji, zapoznaj się z pokazem live.

Example sign-up sign-in page showing a Keep me signed in checkbox

Usługa KMSI jest konfigurowana na poziomie przepływu poszczególnych użytkowników. Przed włączeniem usługi KMSI dla przepływów użytkownika należy wziąć pod uwagę następujące kwestie:

  • Usługa KMSI jest obsługiwana tylko w przypadku zalecanych wersji rejestracji i logowania (SUSI), logowania i edytowania profilów przepływów użytkowników. Jeśli obecnie masz standardową (starsza wersja) lub starszą wersję zapoznawcza — wersje 2 tych przepływów użytkownika i chcesz włączyć usługę KMSI, musisz utworzyć nowe, zalecane wersje tych przepływów użytkownika.
  • Usługa KMSI nie jest obsługiwana w przypadku resetowania hasła ani przepływów użytkownika rejestracji.
  • Jeśli chcesz włączyć usługę KMSI dla wszystkich aplikacji w dzierżawie, zalecamy włączenie usługi KMSI dla wszystkich przepływów użytkowników w dzierżawie. Ponieważ użytkownik może być wyświetlany z wieloma zasadami podczas sesji, możliwe, że może napotkać taki, który nie ma włączonej usługi KMSI, co spowoduje usunięcie pliku cookie KMSI z sesji.
  • Usługa KMSI nie powinna być włączona na komputerach publicznych.

Konfigurowanie usługi KMSI dla przepływu użytkownika

Aby włączyć usługę KMSI dla przepływu użytkownika:

  1. Zaloguj się w witrynie Azure Portal.

  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.

  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.

  4. Wybierz pozycję Przepływy użytkownika (zasady)..

  5. Otwórz utworzony wcześniej przepływ użytkownika.

  6. Wybierz Właściwości.

  7. W obszarze Zachowanie sesji wybierz pozycję Włącz, abym był zalogowany w sesji. Obok pozycji Nie wylogowuj mnie w sesji (dni) wprowadź wartość z zakresu od 1 do 90, aby określić liczbę dni, w których sesja może pozostać otwarta.

    Enable keep me signed in session

Użytkownicy nie powinni włączać tej opcji na komputerach publicznych.

Konfigurowanie identyfikatora strony

Aby włączyć usługę KMSI, ustaw element definicji DataUri zawartości na identyfikatorunifiedssp strony i stronę w wersji1.1.0 lub nowszej.

  1. Otwórz plik rozszerzenia zasad. Na przykład SocialAndLocalAccounts/TrustFrameworkExtensions.xml. Ten plik rozszerzenia jest jednym z plików zasad zawartych w niestandardowym pakiecie startowym zasad, który można uzyskać w ramach wymagań wstępnych , Rozpocznij pracę z zasadami niestandardowymi.

  2. Wyszukaj element BuildingBlocks. Jeśli element nie istnieje, dodaj go.

  3. Dodaj element ContentDefinitions do elementu BuildingBlocks zasad.

    Zasady niestandardowe powinny wyglądać podobnie do następującego fragmentu kodu:

    <BuildingBlocks>
      <ContentDefinitions>
        <ContentDefinition Id="api.signuporsignin">
          <DataUri>urn:com:microsoft:aad:b2c:elements:unifiedssp:1.1.0</DataUri>
        </ContentDefinition>
      </ContentDefinitions>
    </BuildingBlocks>
    

Dodawanie metadanych do własnego profilu technicznego

Aby dodać pole wyboru KMSI do strony rejestracji i logowania, ustaw setting.enableRememberMe metadane na true. Zastąp profile techniczne SelfAsserted-LocalAccountSignin-Email w pliku rozszerzenia.

  1. Znajdź element ClaimsProviders. Jeśli element nie istnieje, dodaj go.

  2. Dodaj następującego dostawcę oświadczeń do elementu ClaimsProviders:

    <ClaimsProvider>
      <DisplayName>Local Account</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
          <Metadata>
            <Item Key="setting.enableRememberMe">True</Item>
          </Metadata>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. Zapisz plik rozszerzeń.

Konfigurowanie pliku jednostki uzależnionej

Zaktualizuj plik jednostki uzależnionej (RP), który inicjuje utworzoną podróż użytkownika. Parametr keepAliveInDays umożliwia skonfigurowanie, jak długo plik cookie sesji nie wylogowuje mnie (KMSI). Jeśli na przykład ustawisz wartość 30, plik cookie sesji KMSI będzie trwały przez 30 dni. Zakres wartości wynosi od 1 do 90 dni. Ustawienie wartości na 0 powoduje wyłączenie funkcji KMSI.

  1. Otwórz plik zasad niestandardowych. Na przykład SignUpOrSignin.xml.

  2. Jeśli jeszcze nie istnieje, dodaj węzeł podrzędny <UserJourneyBehaviors> do węzła <RelyingParty> . Musi znajdować się natychmiast po <DefaultUserJourney ReferenceId="User journey Id" />, na przykład: <DefaultUserJourney ReferenceId="SignUpOrSignIn" />.

  3. Dodaj następujący węzeł jako element podrzędny elementu <UserJourneyBehaviors> .

    <UserJourneyBehaviors>
      <SingleSignOn Scope="Tenant" KeepAliveInDays="30" />
      <SessionExpiryType>Absolute</SessionExpiryType>
      <SessionExpiryInSeconds>1200</SessionExpiryInSeconds>
    </UserJourneyBehaviors>
    

Należy ustawić zarówno KeepAliveInDays, jak i SessionExpiryInSeconds, tak aby podczas logowania, jeśli użytkownik włącza usługę KMSI, parametr KeepAliveInDays jest używany do ustawiania plików cookie, w przeciwnym razie używana jest wartość określona w parametrze SessionExpiryInSeconds. Zalecamy ustawienie wartości SessionExpiryInSeconds na krótki okres (1200 sekund), podczas gdy wartość KeepAliveInDays może być ustawiona na stosunkowo długi okres (30 dni), jak pokazano w poniższym przykładzie:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <UserJourneyBehaviors>
    <SingleSignOn Scope="Tenant" KeepAliveInDays="30" />
    <SessionExpiryType>Absolute</SessionExpiryType>
    <SessionExpiryInSeconds>1200</SessionExpiryInSeconds>
  </UserJourneyBehaviors>
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="OpenIdConnect" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="displayName" />
      <OutputClaim ClaimTypeReferenceId="givenName" />
      <OutputClaim ClaimTypeReferenceId="surname" />
      <OutputClaim ClaimTypeReferenceId="email" />
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
      <OutputClaim ClaimTypeReferenceId="identityProvider" />
      <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
  </TechnicalProfile>
</RelyingParty>

Wyloguj się

Jeśli chcesz wylogować użytkownika z aplikacji, nie wystarczy wyczyścić pliki cookie aplikacji lub zakończyć sesję z użytkownikiem. Aby się wylogować, musisz przekierować użytkownika do usługi Azure AD B2C. W przeciwnym razie użytkownik może mieć możliwość ponownego uwierzytelnienia aplikacji bez ponownego wprowadzania poświadczeń.

Po żądaniu wylogowania usługa Azure AD B2C:

  1. Unieważnia sesję opartą na plikach cookie usługi Azure AD B2C.
  2. Próbuje wylogować się z federacyjnych dostawców tożsamości.
  1. Unieważnia sesję opartą na plikach cookie usługi Azure AD B2C.
  2. Próbuje wylogować się z federacyjnych dostawców tożsamości:
    • OpenId Połączenie — jeśli dobrze znany punkt końcowy konfiguracji dostawcy tożsamości określa lokalizacjęend_session_endpoint. Żądanie wylogowania nie przekazuje parametru id_token_hint . Jeśli dostawca tożsamości federacyjnej wymaga tego parametru, żądanie wylogowania zakończy się niepowodzeniem.
    • OAuth2 — jeśli metadane dostawcy tożsamości zawierają lokalizację end_session_endpoint .
    • SAML — jeśli metadane dostawcy tożsamości zawierają lokalizację SingleLogoutService .
  3. Opcjonalnie wy wylogowanie się z innych aplikacji. Aby uzyskać więcej informacji, zobacz sekcję Logowanie jednokrotne .

Uwaga

Możesz wyłączyć wylogowywanie od federacyjnych dostawców tożsamości, ustawiając metadane SingleLogoutEnabled profilu technicznego dostawcy tożsamości na falsewartość .

Wylogowywanie czyści stan logowania jednokrotnego użytkownika w usłudze Azure AD B2C, ale może nie wylogować użytkownika z sesji dostawcy tożsamości społecznościowych. Jeśli użytkownik wybierze tego samego dostawcę tożsamości podczas kolejnego logowania, może ponownie uwierzytelnić się bez wprowadzania poświadczeń. Jeśli użytkownik chce wylogować się z aplikacji, niekoniecznie oznacza to, że chce wylogować się ze swojego konta na Facebooku. Jeśli jednak są używane konta lokalne, sesja użytkownika kończy się prawidłowo.

Wylogowanie jednokrotne

Po przekierowaniu użytkownika do punktu końcowego wylogowania usługi Azure AD B2C (w przypadku protokołu OAuth2 i Połączenie OpenID) lub wysłania LogoutRequest (dla protokołu SAML) usługa Azure AD B2C czyści sesję 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. Aby wylogować użytkownika ze wszystkich aplikacji, które mają aktywną sesję, usługa Azure AD B2C obsługuje wylogowanie jednokrotne, znane również jako single Log-Out (SLO).

Podczas wylogowywania usługa Azure AD B2C jednocześnie wysyła żądanie HTTP do zarejestrowanego adresu URL wylogowywania wszystkich aplikacji, do których użytkownik jest obecnie zalogowany.

Konfigurowanie zasad niestandardowych

Aby obsługiwać wylogowanie jednokrotne, profile techniczne wystawcy tokenów dla zarówno JWT, jak i SAML muszą określać:

  • Nazwa protokołu, taka jak <Protocol Name="OpenIdConnect" />
  • Odwołanie do profilu technicznego sesji, takiego jak UseTechnicalProfileForSessionManagement ReferenceId="SM-jwt-issuer" />.

Poniższy przykład ilustruje wystawców tokenów JWT i SAML z wylogowania jednokrotnego:

<ClaimsProvider>
  <DisplayName>Local Account SignIn</DisplayName>
  <TechnicalProfiles>
    <!-- JWT Token Issuer -->
    <TechnicalProfile Id="JwtIssuer">
      <DisplayName>JWT token Issuer</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <OutputTokenFormat>JWT</OutputTokenFormat>
      ...    
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-jwt-issuer" />
    </TechnicalProfile>

    <!-- Session management technical profile for OIDC based tokens -->
    <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>

    <!--SAML token issuer-->
    <TechnicalProfile Id="Saml2AssertionIssuer">
      <DisplayName>SAML token issuer</DisplayName>
      <Protocol Name="SAML2" />
      <OutputTokenFormat>SAML2</OutputTokenFormat>
      ...
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-issuer" />
    </TechnicalProfile>

    <!-- Session management technical profile for SAML based tokens -->
    <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>
  </TechnicalProfiles>
</ClaimsProvider>

Konfigurowanie aplikacji

Aby aplikacja mogła uczestniczyć w wylogowaniu jednokrotnym:

  • W przypadku dostawców usług SAML skonfiguruj aplikację przy użyciu lokalizacji SingleLogoutService w dokumencie metadanych SAML. Można również skonfigurować rejestrację logoutUrlaplikacji . Aby uzyskać więcej informacji, zobacz ustawianie adresu URL wylogowywania.
  • W przypadku aplikacji OpenID Połączenie lub OAuth2 ustaw logoutUrl atrybut manifestu rejestracji aplikacji. Aby skonfigurować adres URL wylogowywania:
    1. Z menu usługi Azure AD B2C wybierz pozycję Rejestracje aplikacji.
    2. Wybierz rejestrację aplikacji.
    3. W obszarze Zarządzanie wybierz pozycję Uwierzytelnianie.
    4. W obszarze Adres URL wylogowywania kanału frontonu skonfiguruj adres URL wylogowywania.

Obsługa żądań wylogowania jednokrotnego

Gdy usługa Azure AD B2C odbiera żądanie wylogowywania, używa elementu iframe HTML kanału frontonu do wysyłania żądania HTTP do zarejestrowanego adresu URL wylogowywania każdej uczestniczącej aplikacji, do której użytkownik jest obecnie zalogowany. Należy pamiętać, że aplikacja, która wyzwala żądanie wylogowania, pobiera ten komunikat wylogowywujący. Aplikacje muszą odpowiadać na żądanie wylogowania przez wyczyszczenie sesji aplikacji, która identyfikuje użytkownika.

  • W przypadku aplikacji openID Połączenie i OAuth2 usługa Azure AD B2C wysyła żądanie HTTP GET do zarejestrowanego adresu URL wylogowywania.
  • W przypadku aplikacji SAML usługa Azure AD B2C wysyła żądanie wylogowania SAML do zarejestrowanego adresu URL wylogowywania.

Gdy usługa Azure AD B2C powiadamia wszystkie aplikacje o wylogowaniu, wykonuje jedną z następujących czynności:

  • W przypadku aplikacji OpenID Połączenie lub OAuth2 przekierowuje użytkownika do żądanego post_logout_redirect_uri parametru, w tym parametru (opcjonalnie) state określonego w początkowym żądaniu. Na przykład: https://contoso.com/logout?state=foo.
  • W przypadku aplikacji SAML wysyła odpowiedź wylogowania SAML za pośrednictwem protokołu HTTP POST do aplikacji, która początkowo wysłała żądanie wylogowania.

Zabezpieczanie przekierowania wylogowywanie

Po wylogowaniu użytkownik jest przekierowywany do identyfikatora URI określonego w parametrze post_logout_redirect_uri , niezależnie od adresów URL odpowiedzi określonych dla aplikacji. Jeśli jednak przekazano prawidłowy id_token_hint token i jest włączony token Wymagaj identyfikatora w żądaniach wylogowywanie, usługa Azure AD B2C sprawdza, czy wartość jest post_logout_redirect_uri zgodna z jednym ze skonfigurowanych identyfikatorów URI przekierowania aplikacji przed wykonaniem przekierowania. Jeśli dla aplikacji nie skonfigurowano pasującego adresu URL odpowiedzi, zostanie wyświetlony komunikat o błędzie i użytkownik nie zostanie przekierowany.

Aby wymagać tokenu identyfikatora w żądaniach wylogowywanie:

  1. Zaloguj się w witrynie Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.
  4. Wybierz pozycję Przepływy użytkownika.
  5. Otwórz utworzony wcześniej przepływ użytkownika.
  6. Wybierz Właściwości.
  7. Włącz opcję Wymagaj tokenu identyfikatora w żądaniach wylogowywanie.

Aby wymagać tokenu identyfikatora w żądaniach wylogowywanie, dodaj element UserJourneyBehaviors wewnątrz elementu RelyingParty . Następnie ustaw właściwość EnforceIdTokenHintOnLogoutelementu SingleSignOn na truewartość . Aby uzyskać więcej informacji, zapoznaj się z pokazem live. Element UserJourneyBehaviors powinien wyglądać następująco:

<UserJourneyBehaviors>
  <SingleSignOn Scope="Tenant" EnforceIdTokenHintOnLogout="true"/>
</UserJourneyBehaviors>

Aby skonfigurować adres URL wylogowywania aplikacji:

  1. Wybierz Rejestracje aplikacji, a następnie wybierz aplikację.
  2. Wybierz Uwierzytelnianie.
  3. W polu tekstowym Logout URL (Adres URL wylogowywania) wpisz identyfikator URI przekierowania po wylogowaniu, a następnie wybierz pozycję Zapisz.

Następne kroki