Configurare il comportamento della sessione in Azure Active Directory B2CConfigure session behavior in Azure Active Directory B2C

Prima di iniziare, usare il selettore precedente per scegliere il tipo di criteri che si sta configurando.Before you begin, use the selector above to choose the type of policy you’re configuring. Azure AD B2C offre due metodi per definire il modo in cui gli utenti interagiscono con le applicazioni: tramite flussi utentepredefiniti o tramite criteri personalizzaticompletamente configurabili.Azure AD B2C offers two methods of defining how users interact with your applications: through predefined user flows, or through fully configurable custom policies. I passaggi necessari in questo articolo sono diversi per ogni metodo.The steps required in this article are different for each method.

L'accesso Single Sign-On (SSO) aggiunge sicurezza e praticità quando gli utenti a Azure Active Directory B2C (Azure AD B2C).Single sign-on (SSO) adds security and convenience when users sign in across applications in Azure Active Directory B2C (Azure AD B2C). Questo articolo descrive i metodi di accesso Single Sign-On usati in Azure AD B2C e consente di scegliere il metodo SSO più appropriato durante la configurazione dei criteri.This article describes the single sign-on methods used in Azure AD B2C and helps you choose the most appropriate SSO method when configuring your policy.

Con l'accesso Single Sign-On, gli utenti accedono una sola volta con un singolo account e ottengono l'accesso a più applicazioni.With single sign-on, users sign in once with a single account and get access to multiple applications. L'applicazione può essere un'applicazione Web, per dispositivi mobili o a pagina singola, indipendentemente dal nome della piattaforma o del dominio.The application can be a web, mobile, or single page application, regardless of platform or domain name.

Quando l'utente accede inizialmente a un'applicazione, Azure AD B2C una sessione basata su cookie.When the user initially signs in to an application, Azure AD B2C persists a cookie-based session. In caso di richieste di autenticazione successive, Azure AD B2C legge e convalida la sessione basata su cookie ed elava un token di accesso senza chiedere all'utente di accedere di nuovo.Upon subsequent authentication requests, Azure AD B2C reads and validates the cookie-based session, and issues an access token without prompting the user to sign in again. Se la sessione basata su cookie scade o diventa non valida, all'utente viene richiesto di eseguire di nuovo l'accesso.If the cookie-based session expires or becomes invalid, the user is prompted to sign-in again.

PrerequisitiPrerequisites

Azure AD B2C della sessioneAzure AD B2C session overview

L'integrazione con Azure AD B2C prevede tre tipi di sessioni SSO:Integration with Azure AD B2C involves three types of SSO sessions:

  • Azure AD B2C - Sessione gestita da Azure AD B2CAzure AD B2C - Session managed by Azure AD B2C
  • Provider di identità federato: sessione gestita dal provider di identità, ad esempio Facebook, Salesforce o account MicrosoftFederated identity provider - Session managed by the identity provider, for example Facebook, Salesforce, or Microsoft account
  • Applicazione : sessione gestita dall'applicazione Web, per dispositivi mobili o a pagina singolaApplication - Session managed by the web, mobile, or single page application

Sessione SSO

Azure AD B2C sessioneAzure AD B2C session

Quando un utente esegue correttamente l'autenticazione con un account locale o di social network, Azure AD B2C una sessione basata su cookie nel browser dell'utente.When a user successfully authenticates with a local or social account, Azure AD B2C stores a cookie-based session on the user's browser. Il cookie viene archiviato con il nome Azure AD B2C di dominio del tenant, ad esempio https://contoso.b2clogin.com .The cookie is stored under the Azure AD B2C tenant domain name, such as https://contoso.b2clogin.com.

Se un utente accede inizialmente con un account federato e quindi durante l'intervallo di tempo della sessione (time-to-live o TTL) accede alla stessa app o a un'app diversa, Azure AD B2C tenta di acquisire un nuovo token di accesso dal provider di identità federato.If a user initially signs in with a federated account, and then during the session time window (time-to-live, or TTL) signs in to the same app or a different app, Azure AD B2C tries to acquire a new access token from the federated identity provider. Se la sessione del provider di identità federata è scaduta o non valida, il provider di identità federato richiede all'utente le proprie credenziali.If the federated identity provider session is expired or invalid, the federated identity provider prompts the user for their credentials. Se la sessione è ancora attiva (o se l'utente ha eseguito l'accesso con un account locale anziché con un account federato), Azure AD B2C autorizza l'utente ed elimina ulteriori richieste.If the session is still active (or if the user has signed in with a local account instead of a federated account), Azure AD B2C authorizes the user and eliminates further prompts.

È possibile configurare il comportamento della sessione, tra cui la durata (TTL) della sessione e Azure AD B2C la sessione tra criteri e applicazioni.You can configure the session behavior, including the session TTL and how Azure AD B2C shares the session across policies and applications.

Sessione del provider di identità federataFederated identity provider session

Un provider di identità aziendale o di social network gestisce la propria sessione.A social or enterprise identity provider manages its own session. Il cookie viene archiviato nel nome di dominio del provider di identità, ad esempio https://login.salesforce.com .The cookie is stored under the identity provider's domain name, such as https://login.salesforce.com. Azure AD B2C non controlla la sessione del provider di identità federato.Azure AD B2C doesn't control the federated identity provider session. Il comportamento della sessione è invece determinato dal provider di identità federato.Instead, session behavior is determined by the federated identity provider.

Considerare lo scenario seguente:Consider the following scenario:

  1. Un utente accede a Facebook per controllare il feed.A user signs into Facebook to check their feed.
  2. In seguito, l'utente apre l'applicazione e avvia il processo di accesso.Later, the user opens your application and starts the sign-in process. L'applicazione reindirizza l'utente Azure AD B2C per completare il processo di accesso.The application redirects the user to Azure AD B2C to complete the sign-in process.
  3. Nella pagina Azure AD B2C di iscrizione o di accesso l'utente sceglie di accedere con il proprio account Facebook.On the Azure AD B2C sign-up or sign-in page, the user chooses to sign-in with their Facebook account. L'utente viene reindirizzato a Facebook.The user is redirected to Facebook. Se è presente una sessione attiva in Facebook, all'utente non viene richiesto di fornire le credenziali e viene immediatamente reindirizzato a Azure AD B2C con un token di Facebook.If there is an active session at Facebook, the user is not prompted to provide their credentials and is immediately redirected to Azure AD B2C with a Facebook token.

Sessione dell'applicazioneApplication session

Un'applicazione Web, per dispositivi mobili o a pagina singola può essere protetta dall'accesso OAuth, dai token ID o dai token SAML.A web, mobile, or single page application can be protected by OAuth access, ID tokens, or SAML tokens. Quando un utente tenta di accedere a una risorsa protetta nell'app, l'app controlla se è presente una sessione attiva sul lato applicazione.When a user tries to access a protected resource on the app, the app checks whether there is an active session on the application side. Se non è presente alcuna sessione dell'app o la sessione è scaduta, l'app porta l'utente Azure AD B2C alla pagina di accesso.If there is no app session or the session has expired, the app will take the user to Azure AD B2C to sign-in page.

La sessione dell'applicazione può essere una sessione basata su cookie archiviata nel nome di dominio dell'applicazione, ad esempio https://contoso.com .The application session can be a cookie-based session stored under the application domain name, such as https://contoso.com. Le applicazioni per dispositivi mobili potrebbero archiviare la sessione in modo diverso, ma usando un approccio simile.Mobile applications might store the session in a different way but using a similar approach.

Configurare il Azure AD B2C della sessioneConfigure Azure AD B2C session behavior

È possibile configurare il comportamento Azure AD B2C sessione, tra cui:You can configure the Azure AD B2C session behavior, including:

  • Durata sessione app Web (minuti): periodo di tempo in cui il cookie di sessione Azure AD B2C viene archiviato nel browser dell'utente dopo la corretta autenticazione.Web app session lifetime (minutes) - The amount of time the Azure AD B2C session cookie is stored on the user's browser after successful authentication. È possibile impostare la durata della sessione fino a 24 ore.You can set the session lifetime up to 24 hours.

  • Timeout sessione app Web: indica come una sessione viene estesa dall'impostazione di durata della sessione o dall'impostazione Mantieni l'accesso (KMSI).Web app session timeout - Indicates how a session is extended by the session lifetime setting or the Keep me signed in (KMSI) setting.

    • In sequenza: indica che la sessione viene estesa ogni volta che l'utente esegue un'autenticazione basata su cookie (impostazione predefinita).Rolling - Indicates that the session is extended every time the user performs a cookie-based authentication (default).
    • Assoluto: indica che l'utente è obbligato a eseguire nuovamente l'autenticazione dopo il periodo di tempo specificato.Absolute - Indicates that the user is forced to re-authenticate after the time period specified.
  • Configurazione dell'accesso Single Sign-On: la Azure AD B2C può essere configurata con gli ambiti seguenti:Single sign-on configuration - The Azure AD B2C session can be configured with the following scopes:

    • Tenant: questa è l'impostazione predefinita.Tenant - This setting is the default. L'uso di questa impostazione consente a più applicazioni e flussi utente del tenant di B2C di condividere la stessa sessione utente.Using this setting allows multiple applications and user flows in your B2C tenant to share the same user session. Ad esempio, una volta che un utente accede a un'applicazione, l'utente può anche accedere facilmente a un'altra applicazione dopo l'accesso.For example, once a user signs into an application, the user can also seamlessly sign into another one upon accessing it.
    • Applicazione: questa impostazione consente di mantenere una sessione utente esclusivamente per un'applicazione, indipendentemente dalle altre applicazioni.Application - This setting allows you to maintain a user session exclusively for an application, independent of other applications. Ad esempio, è possibile usare questa impostazione se si desidera che l'utente possa accedere a Contoso Farmacia indipendentemente dal fatto che l'utente sia già connesso a Contoso Groceries.For example, you can use this setting if you want the user to sign in to Contoso Pharmacy regardless of whether the user is already signed into Contoso Groceries.
    • Criterio: questa impostazione consente di mantenere una sessione utente esclusivamente per un flusso utente, indipendentemente dalle applicazioni che lo usano.Policy - This setting allows you to maintain a user session exclusively for a user flow, independent of the applications using it. Ad esempio, se l'utente ha già eseguito l'accesso e ha completato un passaggio multi-factor authentication (MFA), all'utente può essere assegnato l'accesso a parti con sicurezza superiore di più applicazioni, purché la sessione associata al flusso utente non scada.For example, if the user has already signed in and completed a multi-factor authentication (MFA) step, the user can be given access to higher-security parts of multiple applications, as long as the session tied to the user flow doesn't expire.
    • Eliminato: questa impostazione forza l'esecuzione dell'utente attraverso l'intero flusso utente a ogni esecuzione dei criteri.Suppressed - This setting forces the user to run through the entire user flow upon every execution of the policy.
  • Mantieni l'accesso (KMSI): estende la durata della sessione tramite l'uso di un cookie permanente.Keep me signed in (KMSI) - Extends the session lifetime through the use of a persistent cookie. Se questa funzionalità è abilitata e l'utente la seleziona, la sessione rimane attiva anche dopo la chiusura e la riapertura del browser da parte dell'utente.If this feature is enabled and the user selects it, the session remains active even after the user closes and reopens the browser. La sessione viene revocata solo quando l'utente si esce. La funzionalità KMSI si applica solo all'accesso con account locali.The session is revoked only when the user signs out. The KMSI feature only applies to sign-in with local accounts. La funzionalità KMSI ha la precedenza sulla durata della sessione.The KMSI feature takes precedence over the session lifetime.

Per configurare il comportamento della sessione:To configure the session behavior:

  1. Accedere al portale di Azure.Sign in to the Azure portal.
  2. Assicurarsi di usare la directory che contiene il tenant Azure AD B2C selezionando il filtro Directory e sottoscrizione nel menu in alto e scegliendo la directory che contiene il tenant Azure AD B2C locale.Make sure you're using the directory that contains your Azure AD B2C tenant by selecting the Directory + subscription filter in the top menu and choosing the directory that contains your Azure AD B2C tenant.
  3. Scegliere Tutti i servizi nell'angolo in alto a sinistra nel portale di Azure e quindi cercare e selezionare Azure AD B2C.Choose All services in the top-left corner of the Azure portal, and then search for and select Azure AD B2C.
  4. Selezionare Flussi utente.Select User flows.
  5. Aprire il flusso utente creato in precedenza.Open the user flow that you previously created.
  6. Selezionare Proprietà.Select Properties.
  7. Configurare la durata della sessione dell'app Web (minuti), il timeout della sessione dell'app Web, la configurazione dell'accesso Single Sign-On e Richiedi token ID nelle richieste di disconnessione in base alle esigenze.Configure Web app session lifetime (minutes), Web app session timeout, Single sign-on configuration, and Require ID Token in logout requests as needed.
  8. Fare clic su Salva.Click Save.

Per modificare le configurazioni del comportamento della sessione e dell'accesso SSO, è necessario aggiungere un elemento UserJourneyBehaviors all'interno dell'elemento RelyingParty.To change your session behavior and SSO configurations, you add a UserJourneyBehaviors element inside of the RelyingParty element. L'elemento UserJourneyBehaviors deve essere immediatamente successivo a DefaultUserJourney.The UserJourneyBehaviors element must immediately follow the DefaultUserJourney. L'elemento UserJourneyBehavors dovrebbe essere simile all'esempio seguente:Your UserJourneyBehavors element should look like this example:

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

Abilita Mantieni l'accesso (KMSI)Enable Keep me signed in (KMSI)

È possibile abilitare la funzionalità KMSI per gli utenti delle applicazioni Web e native che dispongono di account locali nella directory Azure AD B2C locale.You can enable the KMSI feature for users of your web and native applications who have local accounts in your Azure AD B2C directory. Quando si abilita la funzionalità, gli utenti possono scegliere di rimanere connessi in modo che la sessione rimanga attiva dopo la chiusura del browser.When you enable the feature, users can opt to stay signed in so the session remains active after they close the browser. Possono quindi riaprire il browser senza che venga richiesto di immettere nuovamente il nome utente e la password.Then they can reopen the browser without being prompted to reenter their username and password. Quando l'utente si scollega, l'accesso viene revocato.This access is revoked when a user signs out.

Pagina di iscrizione di esempio con la casella di controllo Mantieni l'accesso

KMSI è configurabile a livello di flusso utente singolo.KMSI is configurable at the individual user flow level. Prima di abilitare KMSI per i flussi utente, tenere presente quanto segue:Before enabling KMSI for your user flows, consider the following:

  • KMSI è supportato solo per le versioni consigliate dei flussi utente di iscrizione e accesso (SUSI), di accesso e di modifica del profilo.KMSI is supported only for the Recommended versions of sign-up and sign-in (SUSI), sign-in, and profile editing user flows. Se si dispone attualmente di versioni Standard (Legacy) o Legacy : versioni v2 di questi flussi utente e si vuole abilitare KMSI, è necessario creare nuove versioni consigliate di questi flussi utente.If you currently have Standard (Legacy) or Legacy preview - v2 versions of these user flows and want to enable KMSI, you'll need to create new, Recommended versions of these user flows.
  • KMSI non è supportato con la reimpostazione della password o i flussi utente di iscrizione.KMSI is not supported with password reset or sign-up user flows.
  • Se si vuole abilitare KMSI per tutte le applicazioni nel tenant, è consigliabile abilitare KMSI per tutti i flussi utente nel tenant.If you want to enable KMSI for all applications in your tenant, we recommend that you enable KMSI for all user flows in your tenant. Poiché un utente può presentare più criteri durante una sessione, è possibile che ne verifichi uno che non ha kmSI abilitato, che rimuove il cookie KMSI dalla sessione.Because a user can be presented with multiple policies during a session, it's possible they could encounter one that doesn't have KMSI enabled, which would remove the KMSI cookie from the session.
  • KmSI non deve essere abilitato nei computer pubblici.KMSI should not be enabled on public computers.

Configurare KMSI per un flusso utenteConfigure KMSI for a user flow

Per abilitare KMSI per il flusso utente:To enable KMSI for your user flow:

  1. Accedere al portale di Azure.Sign in to the Azure portal.

  2. Assicurarsi di usare la directory che contiene il tenant di Azure AD B2C.Make sure you're using the directory that contains your Azure AD B2C tenant. Selezionare il filtro Directory e sottoscrizione nel menu in alto e scegliere la directory che contiene il tenant Azure AD B2C   servizio.Select the Directory + subscription filter in the top menu and choose the directory that contains your Azure AD B2C tenant.

  3. Scegliere Tutti i servizi   nell'angolo superiore sinistro del portale di Azure, quindi cercare e selezionare Azure AD B2C.Choose All services in the top-left corner of the Azure portal, and then search for and select Azure AD B2C.

  4. Selezionare Flussi utente (criteri).Select User flows (policies).

  5. Aprire il flusso utente creato in precedenza.Open the user flow that you previously created.

  6. Selezionare Proprietà.Select Properties.

  7. In  Comportamento sessione selezionare Abilita Mantieni l'accesso alla sessione.Under  Session behavior, select Enable keep me signed in session. Accanto a Mantieni l'accesso alla sessione (giorni) immettere un valore compreso tra 1 e 90 per specificare il numero di giorni per cui una sessione può rimanere aperta.Next to Keep me signed in session (days), enter a value from 1 to 90 to specify the number of days a session can remain open.

    Abilita mantieni l'accesso alla sessione

Gli utenti dovrebbero evitare di abilitare questa funzione su un computer pubblico.Users should not enable this option on public computers.

Configurare l'identificatore di paginaConfigure the page identifier

Per abilitare KMSI, impostare l'elemento di definizione del contenuto su page identifier e DataUri unifiedssp page version 1.1.0 o versione successiva.To enable KMSI, set the content definition DataUri element to page identifier unifiedssp and page version 1.1.0 or above.

  1. Aprire il file di estensione dei criteri,Open the extension file of your policy. ad esempio SocialAndLocalAccounts/TrustFrameworkExtensions.xml.For example, SocialAndLocalAccounts/TrustFrameworkExtensions.xml. Questo file di estensione è uno dei file dei criteri inclusi nel pacchetto starter dei criteri personalizzati, che dovrebbe essere stato ottenuto nel prerequisito Introduzione ai criteri personalizzati.This extension file is one of the policy files included in the custom policy starter pack, which you should have obtained in the prerequisite, Get started with custom policies.

  2. Cercare l'elemento BuildingBlocks.Search for the BuildingBlocks element. Se l'elemento non esiste, aggiungerlo.If the element doesn't exist, add it.

  3. Aggiungere l'elemento ContentDefinitions all'elemento BuildingBlocks del criterio.Add the ContentDefinitions element to the BuildingBlocks element of the policy.

    I criteri personalizzati dovrebbero essere simili al frammento di codice seguente:Your custom policy should look like the following code snippet:

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

Aggiungere i metadati al profilo tecnico autositoAdd the metadata to the self-asserted technical profile

Per aggiungere la casella di controllo KMSI alla pagina di iscrizione e accesso, impostare i setting.enableRememberMe metadati su true.To add the KMSI checkbox to the sign-up and sign-in page, set the setting.enableRememberMe metadata to true. Eseguire l'override dei profili tecnici SelfAsserted-LocalAccountSignin-Email nel file di estensione.Override the SelfAsserted-LocalAccountSignin-Email technical profiles in the extension file.

  1. Trovare l'elemento ClaimsProviders.Find the ClaimsProviders element. Se l'elemento non esiste, aggiungerlo.If the element doesn't exist, add it.
  2. Aggiungere il provider di attestazioni seguente all'elemento ClaimsProviders:Add the following claims provider to the ClaimsProviders element:
<ClaimsProvider>
  <DisplayName>Local Account</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
      <Metadata>
        <Item Key="setting.enableRememberMe">True</Item>
      </Metadata>
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>
  1. Salvare il file delle estensioni.Save the extensions file.

Configurare un file relying partyConfigure a relying party file

Aggiornare il file della relying party (RP) che avvierà il percorso utente appena creato.Update the relying party (RP) file that initiates the user journey that you created. Il parametro keepAliveInDays consente di configurare la durata del cookie di sessione Keep Me Signed In (KMSI).The keepAliveInDays parameter allows you to configure how the long the keep me signed in (KMSI) session cookie should persist. Ad esempio, se si imposta il valore su 30, il cookie di sessione KMSI verrà mantenuto per 30 giorni.For example, if you set the value to 30, then KMSI session cookie will persist for 30 days. L'intervallo per il valore è compreso tra 1 e 90 giorni.The range for the value is from 1 to 90 days.

  1. Aprire il file dei criteri personalizzati.Open your custom policy file. Ad esempio, SignUpOrSignin.xml.For example, SignUpOrSignin.xml.

  2. Se non esiste già, aggiungere un <UserJourneyBehaviors> nodo figlio al <RelyingParty> nodo.If it doesn't already exist, add a <UserJourneyBehaviors> child node to the <RelyingParty> node. Deve trovarsi immediatamente dopo <DefaultUserJourney ReferenceId="User journey Id" /> , ad esempio: <DefaultUserJourney ReferenceId="SignUpOrSignIn" /> .It must be located immediately after <DefaultUserJourney ReferenceId="User journey Id" />, for example: <DefaultUserJourney ReferenceId="SignUpOrSignIn" />.

  3. Aggiungere il nodo seguente come figlio dell'elemento <UserJourneyBehaviors>.Add the following node as a child of the <UserJourneyBehaviors> element.

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

È consigliabile impostare il valore di SessionExpiryInSeconds su un breve periodo (1200 secondi), mentre il valore di KeepAliveInDays può essere impostato su un periodo relativamente lungo (30 giorni), come illustrato nell'esempio seguente:We recommend that you set the value of SessionExpiryInSeconds to be a short period (1200 seconds), while the value of KeepAliveInDays can be set to a relatively long period (30 days), as shown in the following example:

<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>

DisconnessioneSign-out

Quando si vuole disconnettere l'utente dall'applicazione, non è sufficiente cancellare i cookie dell'applicazione o terminare in altro modo la sessione con l'utente.When you want to sign the user out of the application, it isn't enough to clear the application's cookies or otherwise end the session with the user. È necessario reindirizzare l'utente Azure AD B2C per disconnettersi. In caso contrario, l'utente potrebbe essere in grado di eseguire nuovamente l'autenticazione alle applicazioni senza immettere nuovamente le credenziali.You must redirect the user to Azure AD B2C to sign out. Otherwise, the user might be able to re-authenticate to your applications without entering their credentials again.

In caso di richiesta di disconnessione, Azure AD B2C:Upon a sign-out request, Azure AD B2C:

  1. Invalida la sessione Azure AD B2C basata su cookie.Invalidates the Azure AD B2C cookie-based session.
  1. Tentativi di disconnessione dai provider di identità federateAttempts to sign out from federated identity providers
  1. Tentativi di disconnessione dai provider di identità federati:Attempts to sign out from federated identity providers:
    • OpenId Connect: se l'endpoint di configurazione noto del provider di identità specifica un end_session_endpoint percorso.OpenId Connect - If the identity provider well-known configuration endpoint specifies an end_session_endpoint location. La richiesta di disconnessione non passa il id_token_hint parametro .The sign-out request doesn't pass the id_token_hint parameter. Se il provider di identità federato richiede questo parametro, la richiesta di disconnessione avrà esito negativo.If the federated identity provider requires this parameter, the sign-out request will fail.
    • OAuth2: se i metadati del provider di identità contengono il end_session_endpoint percorso.OAuth2 - If the identity provider metadata contains the end_session_endpoint location.
    • SAML: se i metadati del provider di identità contengono il SingleLogoutService percorso.SAML - If the identity provider metadata contains the SingleLogoutService location.
  2. Facoltativamente, si esce da altre applicazioni.Optionally, signs-out from other applications. Per altre informazioni, vedere la sezione Single Sign-Out.For more information, see the Single sign-out section.

Nota

È possibile disabilitare la disconnessione dai provider di identità federati impostando i metadati del profilo tecnico del provider di identità SingleLogoutEnabled su false .You can disable the sign out from federated identity providers, by setting the identity provider technical profile metadata SingleLogoutEnabled to false.

La disconnessione cancella lo stato di accesso Single Sign-On dell'utente con Azure AD B2C, ma potrebbe non disconnettere l'utente dalla sessione del provider di identità social.The sign-out clears the user's single sign-on state with Azure AD B2C, but it might not sign the user out of their social identity provider session. Se l'utente seleziona lo stesso provider di identità durante un accesso successivo, potrebbe eseguire di nuovo l'autenticazione senza immettere le credenziali.If the user selects the same identity provider during a subsequent sign-in, they might reauthenticate without entering their credentials. Se un utente vuole disconnettersi dall'applicazione, non significa necessariamente che vuole disconnettersi dal proprio account Facebook.If a user wants to sign out of the application, it doesn't necessarily mean they want to sign out of their Facebook account. Tuttavia, se vengono usati account locali, la sessione dell'utente termina correttamente.However, if local accounts are used, the user's session ends properly.

Single Sign-OutSingle sign-out

Quando si reindirizza l'utente all'endpoint di disconnessione di Azure AD B2C (per i protocolli OAuth2 e SAML), Azure AD B2C cancella la sessione dell'utente dal browser.When you redirect the user to the Azure AD B2C sign-out endpoint (for both OAuth2 and SAML protocols), Azure AD B2C clears the user's session from the browser. È tuttavia possibile che l'utente sia ancora connesso ad altre applicazioni che usano Azure AD B2C per l'autenticazione.However, the user might still be signed in to other applications that use Azure AD B2C for authentication. Per consentire a tali applicazioni di disconnettere l'utente contemporaneamente, Azure AD B2C invia una richiesta HTTP GET al registrato di tutte le applicazioni a cui l'utente ha eseguito LogoutUrl l'accesso.To enable those applications to sign the user out simultaneously, Azure AD B2C sends an HTTP GET request to the registered LogoutUrl of all the applications that the user is currently signed in to.

Le applicazioni devono rispondere a questa richiesta cancellando qualsiasi sessione che identifica l'utente e restituendo una risposta 200.Applications must respond to this request by clearing any session that identifies the user and returning a 200 response. Se si vuole supportare l'accesso Single Sign-Out nell'applicazione, è necessario LogoutUrl implementare nel codice dell'applicazione.If you want to support single sign-out in your application, you must implement a LogoutUrl in your application's code.

Per supportare l'accesso Single Sign-Out, i profili tecnici dell'autorità emittente di token per JWT e SAML devono specificare:To support single sign-out, the token issuer technical profiles for both JWT and SAML must specify:

  • Nome del protocollo, ad esempio <Protocol Name="OpenIdConnect" />The protocol name, such as <Protocol Name="OpenIdConnect" />
  • Riferimento al profilo tecnico della sessione, ad esempio UseTechnicalProfileForSessionManagement ReferenceId="SM-OAuth-issuer" /> .The reference to the session technical profile, such as UseTechnicalProfileForSessionManagement ReferenceId="SM-OAuth-issuer" />.

L'esempio seguente illustra le autorità emittente di token JWT e SAML con Single Sign-Out:The following example illustrates the JWT and SAML token issuers with single sign-out:

<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-OAuth-issuer" />
    </TechnicalProfile>

    <!-- Session management technical profile for OIDC based tokens -->
    <TechnicalProfile Id="SM-OAuth-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>

Proteggere il reindirizzamento alla disconnessioneSecure your logout redirect

Dopo la disconnessione, l'utente viene reindirizzato all'URI specificato nel parametro , indipendentemente dagli URL di risposta post_logout_redirect_uri specificati per l'applicazione.After logout, the user is redirected to the URI specified in the post_logout_redirect_uri parameter, regardless of the reply URLs that have been specified for the application. Tuttavia, se viene passato un valore valido e l'opzione Richiedi token ID nelle richieste di disconnessione è attivata, Azure AD B2C verifica che il valore di corrisponda a uno degli URI di reindirizzamento configurati dell'applicazione prima di eseguire il id_token_hint post_logout_redirect_uri reindirizzamento.However, if a valid id_token_hint is passed and the Require ID Token in logout requests is turned on, Azure AD B2C verifies that the value of post_logout_redirect_uri matches one of the application's configured redirect URIs before performing the redirect. Se per l'applicazione non è stato configurato alcun URL di risposta corrispondente, viene visualizzato un messaggio di errore e l'utente non viene reindirizzato.If no matching reply URL was configured for the application, an error message is displayed and the user is not redirected.

Per richiedere un token ID nelle richieste di disconnessione:To require an ID Token in logout requests:

  1. Accedere al portale di Azure.Sign in to the Azure portal.
  2. Assicurarsi di usare la directory che contiene il tenant di Azure AD B2C selezionando il filtro Directory e sottoscrizione nel menu in alto e scegliendo la directory che contiene il tenant Azure AD B2C.Make sure you're using the directory that contains your Azure AD B2C tenant by selecting the Directory + subscription filter in the top menu and choosing the directory that contains your Azure AD B2C tenant.
  3. Scegliere Tutti i servizi nell'angolo in alto a sinistra nel portale di Azure e quindi cercare e selezionare Azure AD B2C.Choose All services in the top-left corner of the Azure portal, and then search for and select Azure AD B2C.
  4. Selezionare Flussi utente.Select User flows.
  5. Aprire il flusso utente creato in precedenza.Open the user flow that you previously created.
  6. Selezionare Proprietà.Select Properties.
  7. Abilitare Richiedi token ID nelle richieste di disconnessione.Enable the Require ID Token in logout requests.
  8. Tornare a Azure AD B2C.Go back to Azure AD B2C.
  9. Selezionare Registrazioni app e quindi selezionare l'applicazione.Select App registrations, and then select your application.
  10. Selezionare Autenticazione.Select Authentication.
  11. Nella casella di testo URL disconnessione digitare l'URI di reindirizzamento post-disconnessione e quindi selezionare Salva.In the Logout URL text box, type your post logout redirect URI, and then select Save.

Per richiedere un token ID nelle richieste di disconnessione, aggiungere un elemento UserJourneyBehaviors all'interno dell'elemento RelyingParty.To require an ID Token in logout requests, add a UserJourneyBehaviors element inside of the RelyingParty element. Impostare quindi EnforceIdTokenHintOnLogout dell'elemento SingleSignOn su true .Then set the EnforceIdTokenHintOnLogout of the SingleSignOn element to true. L'elemento UserJourneyBehaviors dovrebbe essere simile all'esempio seguente:Your UserJourneyBehaviors element should look like this example:

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

Per configurare l'URL di disconnessione dell'applicazione:To configure your application Logout URL:

  1. Accedere al portale di Azure.Sign in to the Azure portal.
  2. Assicurarsi di usare la directory che contiene il tenant Azure AD B2C selezionando il filtro Directory e sottoscrizione nel menu in alto e scegliendo la directory che contiene il tenant Azure AD B2C locale.Make sure you're using the directory that contains your Azure AD B2C tenant by selecting the Directory + subscription filter in the top menu and choosing the directory that contains your Azure AD B2C tenant.
  3. Scegliere Tutti i servizi nell'angolo in alto a sinistra nel portale di Azure e quindi cercare e selezionare Azure AD B2C.Choose All services in the top-left corner of the Azure portal, and then search for and select Azure AD B2C.
  4. Selezionare Registrazioni app e quindi selezionare l'applicazione.Select App registrations, and then select your application.
  5. Selezionare Autenticazione.Select Authentication.
  6. Nella casella di testo URL disconnessione digitare l'URI di reindirizzamento post-disconnessione e quindi selezionare Salva.In the Logout URL text box, type your post logout redirect URI, and then select Save.

Passaggi successiviNext steps