Condividi tramite


Provider di sessioni Single Sign-On in Azure Active Directory B2C

Nell'articolo Configurare il comportamento della sessione in Azure Active Directory B2C viene descritta la gestione delle sessioni per i criteri personalizzati di Azure AD B2C. Questo articolo descrive come configurare ulteriormente il comportamento dell'accesso Single Sign-On (SSO) di qualsiasi singolo profilo tecnico all'interno dei criteri personalizzati.

Ad esempio, si configurano i criteri per l'accesso Single Sign-On a livello di tenant, ma si vuole eseguire sempre il passaggio a più fattori indipendentemente da una sessione SSO attiva. È possibile ottenere questo comportamento configurando il provider di sessioni del profilo tecnico a più fattori.

È possibile applicare provider di sessioni a due flussi:

  • Accesso aggiornato
    • Quando l'utente accede per la prima volta, non è presente alcuna sessione. Tutti i profili tecnici che usano un provider di sessioni diventano un partecipante della sessione.
    • Il provider di sessione può scrivere attestazioni nel cookie di sessione.
  • Accessi successivi
    • Quando l'utente ha una sessione attiva, le attestazioni che fanno parte del cookie di sessione vengono lette nel contenitore di attestazioni.
    • Le attestazioni che fanno parte del cookie di sessione non possono essere aggiornate.
    • Il provider di sessioni può emettere attestazioni aggiuntive nel contenitore di attestazioni, a indicare che questo profilo tecnico è stato eseguito in condizioni SSO.
    • Il profilo tecnico può essere ignorato.

A seconda del provider di gestione delle sessioni scelto per un determinato profilo tecnico, il comportamento della sessione può essere attivo o eliminato. L'elenco seguente presenta alcuni dei numerosi esempi possibili che usano provider di sessioni:

  • Impedire o imporre interruzioni dell'interfaccia utente durante gli accessi successivi (SSO).
  • Ricordare il provider di identità scelto durante gli accessi successivi (SSO).
  • Ridurre il numero di operazioni di lettura nella directory durante gli accessi successivi (SSO).
  • Tenere traccia delle sessioni del provider di identità di social networking per eseguire la disconnessa del provider di identità.
  • Tenere traccia delle applicazioni relying party registrate per l'accesso Single Sign-Out.

Provider di sessioni

Sono disponibili cinque provider di sessioni per gestire il modo in cui un profilo tecnico gestisce la sessione SSO. È necessario scegliere il provider di sessioni più appropriato durante la configurazione del profilo tecnico.

La tabella seguente illustra il provider di sessioni da usare a seconda del tipo di profilo tecnico che si vuole gestire. Alcuni provider di sessioni consentono la lettura e la scrittura di attestazioni nel cookie di sessione.

Provider di sessione Tipi di profilo tecnico applicabili Scopo Scrivere attestazioni Leggere le attestazioni
DefaultSSOSessionProvider Autocertificati, Microsoft Entra ID, autenticazione a più fattori Microsoft Entra, trasformazione attestazioni Ignora l'esecuzione del profilo tecnico.
ExternalLoginSSOSessionProvider Provider di identità OAuth1, provider di identità Oauth2, provider di identità OpenID Connect, provider di identità SAML Accelerare la pagina di selezione del provider di identità. Esecuzione di una disconnessione singola.
OAuthSSOSessionProvider Autorità emittente del token JWT Gestisce la sessione tra la relying party OAuth2 o OpenId Connect e Azure AD B2C. Esegue la disconnessione singola. No No
SamlSSOSessionProvider Autorità emittente del token SAML Gestisce la sessione tra la relying party SAML e Azure AD B2C. Esegue la disconnessione singola. No No
NoopSSOSessionProvider Any Impedire a qualsiasi profilo tecnico di essere parte della sessione. No No

Il diagramma seguente illustra i tipi di sessione usati da Azure AD B2C.

Diagramma che mostra i tipi di provider di sessioni di Azure AD B2C.

Riferimento a un provider di sessione

Per usare un provider di sessioni nel profilo tecnico:

  1. Creare un profilo tecnico di gestione delle sessioni del appropriato. Si noti che lo starter pack di Azure AD B2C include i profili tecnici di gestione delle sessioni più comuni. È possibile fare riferimento a un profilo tecnico di gestione delle sessioni esistente, se applicabile.

    Il frammento XML seguente mostra il profilo tecnico di gestione delle sessioni dello SM-AAD starter pack. Il tipo di DefaultSSOSessionProviderspecifica della sessione è .

    <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. Fare riferimento al profilo tecnico di gestione delle sessioni all'interno del profilo tecnico. In questo modo, è possibile controllare il comportamento di tale profilo tecnico durante gli accessi successivi (SSO).

    Per fare riferimento a un profilo tecnico di gestione delle sessioni dal profilo tecnico, aggiungere l'elemento UseTechnicalProfileForSessionManagement . L'esempio seguente illustra l'uso del profilo tecnico di gestione delle SM-AAD sessioni. Passare all'ID ReferenceId del profilo tecnico di gestione della sessione.

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

Importante

Quando un profilo tecnico non fa riferimento ad alcun provider di gestione delle sessioni, viene applicato il provider di sessioni DefaultSSOSessionProvider , che può causare un comportamento imprevisto.

Nota

Durante un flusso di token di aggiornamento, i provider di gestione delle sessioni non vengono richiamati. Tutti i tentativi di emettere un nuovo token di accesso sono una copia delle attestazioni originali rilasciate.

Gestire le attestazioni di sessione

I profili tecnici di gestione delle sessioni controllano quali attestazioni possono essere lette, scritte o output durante l'esecuzione di criteri personalizzati.

All'interno del profilo tecnico di gestione delle sessioni, usare PersistedClaims gli elementi e OutputClaims per gestire le attestazioni.

  • Attestazioni persistenti: attestazioni che possono essere scritte nel cookie di sessione.
    • Affinché un'attestazione venga scritta nel cookie di sessione, deve far parte del contenitore di attestazioni corrente.
    • Tutte le attestazioni scritte restituiscono automaticamente durante gli accessi successivi (Single Sign-On). Non è necessario specificare le attestazioni di output.
  • Attestazioni di output: attestazioni aggiuntive che possono essere restituite nel contenitore di attestazioni durante gli accessi successivi (Single Sign-On). Poiché le attestazioni di output non vengono restituite dalla sessione, è necessario impostare un valore predefinito.

Gli elementi delle attestazioni persistenti e di output vengono illustrati nel frammento XML seguente:

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

I provider di gestione delle DefaultSSOSessionProvider sessioni e ExternalLoginSSOSessionProvider possono essere configurati per gestire le attestazioni, in modo che durante:

  • Accesso aggiornato
    • L'elemento PersistedClaims scriverà attestazioni nel cookie di sessione. Le attestazioni persistenti non possono essere riscritte.
  • Accessi successivi
    • Ogni attestazione scritta nel cookie di sessione verrà restituita nel contenitore delle attestazioni, disponibile per essere usata nel passaggio di orchestrazione successivo.
    • L'elemento OutputClaims restituirà attestazioni statiche nel contenitore delle attestazioni. Usare l'attributo DefaultValue per impostare il valore dell'attestazione di output.

DefaultSSOSessionProvider

Il DefaultSSOSessionProvider provider di sessioni può essere configurato per gestire le attestazioni durante gli accessi successivi (Single Sign-On) e consentire l'ignorato dei profili tecnici. Deve DefaultSSOSessionProvider essere usato per rendere persistenti ed emettere attestazioni necessarie per i passaggi di orchestrazione successivi che non verranno altrimenti ottenuti durante gli accessi successivi (Single Sign-On). Ad esempio, attestazioni che potrebbero essere ottenute dalla lettura dell'oggetto utente dalla directory.

Il profilo tecnico seguente SM-AAD è il tipo di provider di DefaultSSOSessionProvider sessioni. Il SM-AAD profilo tecnico è disponibile nel pacchetto di avvio dei criteri personalizzato.

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

Ad esempio, il profilo tecnico di gestione delle SM-AADsessioni usa il DefaultSSOSessionProvider provider di sessione. Il comportamento si comporterà come segue quando applicato al SelfAsserted-LocalAccountSignin-Email profilo tecnico dal pacchetto di avvio dei criteri personalizzato:

  • Accesso aggiornato
    • signInName verrà scritto nel cookie di sessione, perché il profilo tecnico di gestione della sessione (SM-AAD) è configurato con signInName per essere salvato in modo permanente e il profilo tecnico che fa riferimento a SM-AAD contiene un OutputClaim per signInName. Questo comportamento è applicabile a tutte le attestazioni che soddisfano questo modello.
  • Accessi successivi
    • Il profilo tecnico viene ignorato e l'utente non visualizzerà la pagina di accesso.
    • Il contenitore attestazioni conterrà il signInName valore del cookie di sessione, che è stato salvato in modo permanente al momento dell'accesso aggiornato e qualsiasi altra attestazione che soddisfa il modello da rendere persistente nel cookie di sessione.
    • Il profilo tecnico di gestione della sessione restituisce l'attestazione objectIdFromSession perché Output le attestazioni del provider di sessione vengono elaborate durante gli accessi successivi (Single Sign-On). In questo caso, l'attestazione objectIdFromSession presente nel contenitore attestazioni indica che le attestazioni dell'utente provengono dal cookie di sessione a causa dell'accesso Single Sign-On.

ExternalLoginSSOSessionProvider

Il ExternalLoginSSOSessionProvider provider di sessioni viene usato per ignorare la schermata "selezione del provider di identità" e disconnettersi da un provider di identità federato. Viene in genere fatto riferimento in un profilo tecnico configurato per un provider di identità federato, ad esempio Facebook o Microsoft Entra ID.

  • Accesso aggiornato
    • L'elemento PersistedClaims scriverà attestazioni nel cookie di sessione. Le attestazioni persistenti non possono essere riscritte.
  • Accessi successivi
    • Ogni attestazione scritta nel cookie di sessione verrà restituita nel contenitore attestazioni, disponibile per essere usata nel passaggio di orchestrazione successivo.
    • L'elemento OutputClaims restituirà attestazioni statiche nel contenitore delle attestazioni. Usare l'attributo DefaultValue per impostare il valore dell'attestazione.
    • Quando un profilo tecnico, che fa riferimento a un profilo tecnico di gestione delle sessioni, contiene un OutputClaim, che è stato salvato in modo permanente nel cookie di sessione, questo profilo tecnico verrà ignorato.

Il profilo tecnico seguente SM-SocialLogin è il tipo di provider di ExternalLoginSSOSessionProvider sessioni. Il SM-SocialLogin profilo tecnico è disponibile nel pacchetto di avvio dei criteri personalizzato.

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

L'attestazione AlternativeSecurityId viene generata quando un utente accede con un provider di identità esterno. Rappresentazione dell'identificatore univoco dell'utente del provider di identità esterno. L'attestazione AlternativeSecurityId viene mantenuta in modo che nei percorsi single sign-on, il profilo dell'utente può essere letto dalla directory senza alcuna interazione con il provider di identità federato.

Per configurare il provider di sessioni esterne, aggiungere un riferimento a SM-SocialLogin da profili tecnici OAuth1, OAuth2 o OpenID Connect . Ad esempio, Facebook-OAUTH usa il profilo tecnico di gestione delle SM-SocialLogin sessioni. Per altre informazioni, vedere il pacchetto di avvio dei criteri personalizzato.

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

OAuthSSOSessionProvider

Il OAuthSSOSessionProvider provider di sessioni viene usato per gestire le sessioni di Azure AD B2C tra la relying party OAuth2 o OpenId Connect e Azure AD B2C. Azure AD B2C supporta l'accesso Single Sign-Out, noto anche come Single Log-Out (SLO). Quando un utente si disconnette tramite l'endpoint di disconnesso di Azure AD B2C, Azure AD B2C cancellerà il cookie di sessione dell'utente dal browser. Tuttavia, l'utente potrebbe comunque accedere ad altre applicazioni che usano Azure AD B2C per l'autenticazione.

Questo tipo di provider di sessioni consente ad Azure AD B2C di tenere traccia di tutte le applicazioni OAuth2 o OpenId Connect a cui l'utente ha eseguito l'accesso. Durante la disconnesscenza di un'applicazione, Azure AD B2C tenterà di chiamare gli logout endpoint di tutte le altre applicazioni registrate note. Questa funzionalità è incorporata nel provider di sessioni. Non sono disponibili attestazioni di output o persistenti da configurare. Il profilo tecnico seguente SM-jwt-issuer è il tipo di provider di OAuthSSOSessionProvider sessioni.

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

Il SM-jwt-issuer profilo tecnico viene fatto riferimento dal JwtIssuer profilo tecnico:

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

SamlSSOSessionProvider

Il SamlSSOSessionProvider provider di sessioni viene usato per gestire il comportamento della sessione con provider di identità SAML federati o applicazioni relying party SAML e Azure AD B2C.

Gestione delle sessioni del provider di identità SAML

Quando si fa riferimento a un SamlSSOSessionProvider provider di sessione da una sessione del provider di identità SAML, è RegisterServiceProviders necessario impostare su false.

Il profilo tecnico seguente SM-Saml-idp è il tipo di provider di SamlSSOSessionProvider sessioni:

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

Per usare il profilo tecnico di gestione delle SM-Saml-idp sessioni, aggiungere un riferimento al profilo tecnico del provider di identità SAML. Ad esempio, il provider di Contoso-SAML2 identità SAML DI AD-FS usa il profilo tecnico di gestione delle SM-Saml-idp sessioni.

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

Gestione delle sessioni del provider di servizi SAML

Quando si fa riferimento a un SamlSSOSessionProvider provider di sessioni per gestire una sessione della relying party SAML, è RegisterServiceProviders necessario impostare su true. La disconnessazione della sessione SAML richiede il completamento di SessionIndex e NameID .

Il profilo tecnico seguente SM-Saml-issuer è il tipo di provider di SamlSSOSessionProvider sessioni:

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

Per usare il profilo tecnico di gestione delle SM-Saml-issuer sessioni, aggiungere un riferimento al profilo tecnico dell'autorità emittente del token SAML. Ad esempio, il Saml2AssertionIssuer profilo tecnico usa il profilo tecnico di gestione delle SM-Saml-issuer sessioni.

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

Metadati UFX

Attributo Obbligatorio Descrizione
IncludeSessionIndex No Attualmente non usato; può essere ignorato.
RegisterServiceProviders No Indica che il provider deve registrare tutti i provider di servizi SAML a cui sia stata rilasciata un'asserzione. I valori possibili sono: true (impostazione predefinita) o false.

NoopSSOSessionProvider

Il NoopSSOSessionProvider provider di sessioni viene usato per eliminare il comportamento dell'accesso Single Sign-On. I profili tecnici che usano questo tipo di provider di sessioni verranno sempre elaborati, anche quando l'utente ha una sessione attiva. Questo tipo di provider di sessioni può essere utile per forzare l'esecuzione sempre di profili tecnici specifici, ad esempio:

  • Trasformazione delle attestazioni: per creare o trasformare le attestazioni usate in un secondo momento per determinare quali passaggi di orchestrazione elaborare o ignorare.
  • Restful : recuperare i dati aggiornati da un servizio restful ogni volta che viene eseguito il criterio. È anche possibile chiamare restful per la registrazione estesa e il controllo.
  • Autocertificata : forzare l'utente a fornire dati ogni volta che viene eseguito il criterio. Ad esempio, verificare i messaggi di posta elettronica con codice pass-time o chiedere il consenso dell'utente.
  • Phonefactor : forzare l'utente a eseguire l'autenticazione a più fattori come parte di un "'autenticazione passo avanti" anche durante gli accessi successivi (Single Sign-On).

Questo tipo di provider di sessioni non rende persistenti le attestazioni per il cookie di sessione dell'utente. Il profilo tecnico seguente SM-Noop è il tipo di provider di NoopSSOSessionProvider sessioni. Il SM-Noop profilo tecnico è disponibile nel pacchetto di avvio dei criteri personalizzato.

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

Per eliminare il comportamento dell'accesso Single Sign-On di un profilo tecnico, aggiungere un riferimento al SM-Noop profilo tecnico. Ad esempio, AAD-Common usa il profilo tecnico di gestione delle SM-Noop sessioni. Per altre informazioni, vedere il pacchetto di avvio dei criteri personalizzato.

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

Passaggi successivi

Informazioni su come configurare il comportamento della sessione.