Condividi tramite


Configurare le opzioni del provider di identità SAML con Azure Active Directory B2C

Azure Active Directory B2C (Azure AD B2C) supporta la federazione con provider di identità SAML 2.0. Questo articolo descrive come analizzare le asserzioni di sicurezza e le opzioni di configurazione disponibili quando si abilita l'accesso con un provider di identità SAML.

Prima di iniziare, usare il selettore Scegli un tipo di criterio per scegliere il tipo di criterio che si sta configurando. Azure Active Directory B2C offre due metodi per definire il modo in cui gli utenti interagiscono con le applicazioni: tramite flussi utente predefiniti o tramite criteri personalizzati completamente configurabili. I passaggi necessari in questo articolo sono diversi per ogni metodo.

Questa funzionalità è disponibile solo per i criteri personalizzati. Per i passaggi di installazione, selezionare Criteri personalizzati nel selettore precedente.

Mapping delle attestazioni

L'elemento OutputClaims contiene un elenco di attestazioni restituite dal provider di identità SAML. È necessario eseguire il mapping del nome dell'attestazione definita nel criterio al nome definito nel provider di identità. Controllare il provider di identità per l'elenco di attestazioni (asserzioni). È anche possibile controllare il contenuto della risposta SAML restituita dal provider di identità. Per altre informazioni, vedere Eseguire il debug dei messaggi SAML. Per aggiungere un'attestazione, definire prima un'attestazione, quindi aggiungere l'attestazione alla raccolta di attestazioni di output.

È anche possibile includere attestazioni che non vengono restituite dal provider di identità, purché l'attributo sia DefaultValue impostato. Il valore predefinito può essere statico o dinamico, usando le attestazioni di contesto.

L'elemento attestazione di output contiene gli attributi seguenti:

  • ClaimTypeReferenceId è il riferimento a un tipo di attestazione.
  • PartnerClaimType è il nome della proprietà che appare asserzione SAML.
  • DefaultValue è un valore predefinito. Se l'attestazione è vuota, viene usato il valore predefinito. È anche possibile usare i resolver di attestazioni con un valore contestuale, ad esempio l'ID di correlazione o l'indirizzo IP dell'utente.

Nome oggetto

Per leggere SAML assertion NameIdnell'oggetto come attestazione normalizzata, impostare l'attestazione PartnerClaimType sul valore dell'attributo SPNameQualifier . Se l'attributo SPNameQualifiernon viene presentato, impostare l'attestazione PartnerClaimType sul valore dell'attributo NameQualifier .

Asserzione SAML:

<saml:Subject>
  <saml:NameID SPNameQualifier="http://your-idp.com/unique-identifier" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">david@contoso.com</saml:NameID>
  <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
    <SubjectConfirmationData InResponseTo="_cd37c3f2-6875-4308-a9db-ce2cf187f4d1" NotOnOrAfter="2020-02-15T16:23:23.137Z" Recipient="https://<your-tenant>.b2clogin.com/<your-tenant>.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer" />
    </SubjectConfirmation>
  </saml:SubjectConfirmation>
</saml:Subject>

Attestazione di output:

<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="http://your-idp.com/unique-identifier" />

Se entrambi SPNameQualifier gli attributi o NameQualifier non vengono presentati nell'asserzione SAML, impostare l'attestazione PartnerClaimType su assertionSubjectName. Assicurarsi che NameId sia il primo valore nell'asserzione XML. Quando si definisce più di un'asserzione, Azure Active Directory B2C sceglie il valore del soggetto dall'ultima asserzione.

Configurare le associazioni del protocollo SAML

Le richieste SAML vengono inviate al provider di identità come specificato nell'elemento di metadati del provider di identità SingleSignOnService . La maggior parte delle richieste di autorizzazione dei provider di identità viene trasportata direttamente nella stringa di query URL di una richiesta HTTP GET ,in quanto i messaggi sono relativamente brevi. Per informazioni su come configurare le associazioni per entrambe le richieste SAML, vedere la documentazione del provider di identità.

Il codice XML seguente è un esempio di un servizio Single Sign-On di metadati Microsoft Entra con due associazioni. Ha HTTP-Redirect la precedenza su HTTP-POST perché viene visualizzato per primo nei metadati del provider di identità SAML.

<IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
  ...
  <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/saml2"/>
  <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000/saml2"/>
</IDPSSODescriptor>

Servizio consumer di asserzione

Il servizio consumer di asserzione (o ACS) è il percorso in cui le risposte SAML del provider di identità vengono inviate e ricevute da Azure AD B2C. Le risposte SAML vengono trasmesse ad Azure AD B2C tramite l'associazione HTTP POST. La posizione ACS punta ai criteri di base della relying party. Ad esempio, se il criterio relying è B2C_1A_signup_signin, il servizio contenitore di Azure è il criterio di base del B2C_1A_signup_signin, ad esempio B2C_1A_TrustFrameworkBase.

Il codice XML seguente è un esempio di un elemento del servizio consumer di asserzione dei metadati dei criteri di Azure AD B2C.

<SPSSODescriptor AuthnRequestsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
  ...
  <AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://your-tenant.b2clogin.com/your-tenant/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer" index="0" isDefault="true"/>
</SPSSODescriptor>

Configurare la firma della richiesta SAML

Azure AD B2C firma tutte le richieste di autenticazione in uscita usando la chiave crittografica SamlMessageSigning . Per disabilitare la firma della richiesta SAML, impostare WantsSignedRequests su false. Se i metadati sono impostati su false, i parametri SigAlg e Signature (stringa di query o parametro post) vengono omessi dalla richiesta.

Questi metadati controllano anche l'attributo AuthnRequestsSigned , incluso nei metadati del profilo tecnico di Azure AD B2C condiviso con il provider di identità. Azure AD B2C non firma la richiesta se il valore di WantsSignedRequests nei metadati del profilo tecnico è impostato su e i metadati del provider di identità WantAuthnRequestsSigned sono impostati false su false o meno.

Nell'esempio seguente viene rimossa la firma dalla richiesta SAML.

<Metadata>
  ...
  <Item Key="WantsSignedRequests">false</Item>
</Metadata>

Algoritmo di firma

Azure AD B2C usa Sha1 per firmare la richiesta SAML. Usare i metadati XmlSignatureAlgorithm per configurare l'algoritmo da usare. I valori possibili sono Sha256, Sha384, Sha512o Sha1 (impostazione predefinita). Questi metadati controllano il valore del parametro SigAlg (stringa di query o parametro post) nella richiesta SAML. Verificare di configurare l'algoritmo di firma per entrambe le parti con lo stesso valore. Usare solo l'algoritmo supportato dal certificato.

Includi informazioni chiave

Quando il provider di identità indica che l'associazione di Azure AD B2C è impostata su HTTP-POST, Azure AD B2C include la firma e l'algoritmo nel corpo della richiesta SAML. È anche possibile configurare Microsoft Entra ID per includere la chiave pubblica del certificato quando l'associazione è impostata su HTTP-POST. Usare i metadati IncludeKeyInfo per trueo false. Nell'esempio seguente Microsoft Entra ID non include la chiave pubblica del certificato.

<Metadata>
  ...
  <Item Key="IncludeKeyInfo">false</Item>
</Metadata>

Configurare l'ID del nome della richiesta SAML

L'elemento della richiesta <NameID> di autorizzazione SAML indica il formato dell'identificatore del nome SAML. Questa sezione descrive la configurazione predefinita e come personalizzare l'elemento ID nome.

Nome utente preferito

Durante un percorso utente di accesso, un'applicazione relying party può avere come destinazione un utente specifico. Azure AD B2C consente di inviare un nome utente preferito al provider di identità SAML. L'elemento InputClaims viene usato per inviare un NameId all'interno dell'oggetto della richiesta di autorizzazione SAML.

Per includere l'ID del nome soggetto all'interno della richiesta di autorizzazione, aggiungere l'elemento seguente <InputClaims> immediatamente dopo .<CryptographicKeys> PartnerClaimType deve essere impostato su subject.

<InputClaims>
  <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="subject" />
</InputClaims>

In questo esempio Azure AD B2C invia il valore dell'attestazione signInName con NameId all'interno dell'oggetto della richiesta di autorizzazione SAML.

<samlp:AuthnRequest ... >
  ...
  <saml:Subject>
    <saml:NameID>sam@contoso.com</saml:NameID>
  </saml:Subject>
</samlp:AuthnRequest>

È possibile usare le attestazioni di contesto, ad esempio {OIDC:LoginHint} per popolare il valore dell'attestazione.

<Metadata>
  ...
  <Item Key="IncludeClaimResolvingInClaimsHandling">true</Item>
</Metadata>
  ...
<InputClaims>
  <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="subject" DefaultValue="{OIDC:LoginHint}" AlwaysUseDefaultValue="true" />
</InputClaims>

Formato dei criteri ID nome

Per impostazione predefinita, la richiesta di autorizzazione SAML specifica i urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified criteri. Questo ID nome indica che è possibile usare qualsiasi tipo di identificatore supportato dal provider di identità per l'oggetto richiesto.

Per modificare questo comportamento, vedere la documentazione del provider di identità per indicazioni sui criteri id nome supportati. Aggiungere quindi i NameIdPolicyFormat metadati nel formato dei criteri corrispondente. Ad esempio:

<Metadata>
  ...
  <Item Key="NameIdPolicyFormat">urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</Item>
</Metadata>

La richiesta di autorizzazione SAML seguente contiene i criteri id nome.

<samlp:AuthnRequest ... >
  ...
  <samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" />
</samlp:AuthnRequest>

Consenti la creazione di nuovi account

Se si specifica il formato dei criteri ID nome, è anche possibile specificare la AllowCreate proprietà NameIDPolicy per indicare se il provider di identità può creare un nuovo account durante il flusso di accesso. Per indicazioni, vedere la documentazione del provider di identità.

Azure AD B2C omette la AllowCreate proprietà per impostazione predefinita. È possibile modificare questo comportamento usando i NameIdPolicyAllowCreate metadati. Il valore di questi metadati è true o false.

Nell'esempio seguente viene illustrato come impostare AllowCreate la proprietà di NameIDPolicy su true.

<Metadata>
  ...
  <Item Key="NameIdPolicyFormat">urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</Item>
  <Item Key="NameIdPolicyAllowCreate">true</Item>
</Metadata>

Nell'esempio seguente viene illustrata una richiesta di autorizzazione con AllowCreate dell'elemento NameIDPolicy nella richiesta di autorizzazione.

<samlp:AuthnRequest ... >
  ...
  <samlp:NameIDPolicy 
      Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" 
      AllowCreate="true" />
</samlp:AuthnRequest>

Forzare l'autenticazione

È possibile forzare l'IDP SAML esterno a richiedere all'utente l'autenticazione passando la ForceAuthN proprietà nella richiesta di autenticazione SAML. Anche il provider di identità deve supportare questa proprietà.

La ForceAuthN proprietà è un valore o false booleanotrue. Per impostazione predefinita, Azure AD B2C imposta il valore ForceAuthN su false. Se la sessione viene reimpostata (ad esempio usando in prompt=login OIDC), il ForceAuthN valore viene impostato su true. L'impostazione dei ForceAuthN metadati su true forza il valore per tutte le richieste all'IDP esterno.

Nell'esempio seguente viene illustrata la ForceAuthN proprietà impostata su true:

<Metadata>
  ...
  <Item Key="ForceAuthN">true</Item>
  ...
</Metadata>

L'esempio seguente mostra la ForceAuthN proprietà in una richiesta di autorizzazione:

<samlp:AuthnRequest AssertionConsumerServiceURL="https://..."  ...
                    ForceAuthN="true">
  ...
</samlp:AuthnRequest>

Nome provider

Facoltativamente, è possibile includere l'attributo ProviderName nella richiesta di autorizzazione SAML. Impostare i ProviderName metadati per includere il nome del provider per tutte le richieste all'IDP SAML esterno. Nell'esempio seguente viene illustrata la ProviderName proprietà impostata su Contoso app:

<Metadata>
  ...
  <Item Key="ProviderName">Contoso app</Item>
  ...
</Metadata>

Nell'esempio seguente viene illustrata la ProviderName proprietà in una richiesta di autorizzazione:

<samlp:AuthnRequest AssertionConsumerServiceURL="https://..."  ...
                    ProviderName="Contoso app">
  ...
</samlp:AuthnRequest>

Includere riferimenti alla classe di contesto di autenticazione

Una richiesta di autorizzazione SAML può contenere un elemento AuthnContext , che specifica il contesto di una richiesta di autorizzazione. L'elemento può contenere un riferimento alla classe di contesto di autenticazione, che indica al provider di identità SAML quale meccanismo di autenticazione presentare all'utente.

Per configurare i riferimenti alla classe di contesto di autenticazione, aggiungere metadati IncludeAuthnContextClassReferences . Nel valore specificare uno o più riferimenti URI che identificano le classi di contesto di autenticazione. Specificare più URI come elenco delimitato da virgole. Per indicazioni sugli URI AuthnContextClassRef supportati, vedere la documentazione del provider di identità.

L'esempio seguente consente agli utenti di accedere con nome utente e password e di accedere con nome utente e password tramite una sessione protetta (SSL/TLS).

<Metadata>
  ...
  <Item Key="IncludeAuthnContextClassReferences">urn:oasis:names:tc:SAML:2.0:ac:classes:Password,urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</Item>
</Metadata>

La richiesta di autorizzazione SAML seguente contiene i riferimenti alla classe di contesto di autenticazione.

<samlp:AuthnRequest ... >
  ...
  <samlp:RequestedAuthnContext>
    <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef>
    <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
  </samlp:RequestedAuthnContext>
</samlp:AuthnRequest>

Includere dati personalizzati nella richiesta di autorizzazione

Facoltativamente, è possibile includere elementi di estensione del messaggio di protocollo accettati da Azure AD B2C e dal provider di identità. L'estensione viene presentata in formato XML. Sono inclusi elementi di estensione aggiungendo dati XML all'interno dell'elemento <![CDATA[Your Custom XML]]>CDATA . Controllare la documentazione del provider di identità per vedere se l'elemento di estensione è supportato.

Nell'esempio seguente viene illustrato l'uso dei dati di estensione:

<Metadata>
  ...
  <Item Key="AuthenticationRequestExtensions"><![CDATA[
            <ext:MyCustom xmlns:ext="urn:ext:custom">
              <ext:AssuranceLevel>1</ext:AssuranceLevel>
              <ext:AssuranceDescription>Identity verified to level 1.</ext:AssuranceDescription>
            </ext:MyCustom>]]></Item>
</Metadata>

Nota

Per la specifica SAML, i dati dell'estensione devono essere XML qualificati per lo spazio dei nomi,ad esempio 'urn:ext:custom' visualizzati nell'esempio e non devono essere uno degli spazi dei nomi specifici di SAML.

Con l'estensione del messaggio del protocollo SAML, la risposta SAML è simile all'esempio seguente:

<samlp:AuthnRequest ... >
  ...
  <samlp:Extensions>
    <ext:MyCustom xmlns:ext="urn:ext:custom">
      <ext:AssuranceLevel>1</ext:AssuranceLevel>
      <ext:AssuranceDescription>Identity verified to level 1.</ext:AssuranceDescription>
    </ext:MyCustom>
  </samlp:Extensions>
</samlp:AuthnRequest>

Richiedi risposte SAML firmate

Azure AD B2C richiede la firma di tutte le asserzioni in ingresso. È possibile rimuovere questo requisito impostando WantsSignedAssertions su false. Il provider di identità non deve firmare le asserzioni in questo caso, ma anche se lo fa, Azure AD B2C non convalida la firma.

I metadati WantsSignedAssertions controllano il flag di metadati SAML WantAssertionsSigned, incluso nei metadati del profilo tecnico di Azure AD B2C condiviso con il provider di identità.

<SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">

Se si disabilita la convalida delle asserzioni, è anche possibile disabilitare la convalida della firma del messaggio di risposta. Impostare i metadati ResponsesSigned su false. Il provider di identità non deve firmare il messaggio di risposta SAML in questo caso, ma anche se lo fa, Azure AD B2C non convalida la firma.

L'esempio seguente rimuove sia il messaggio che la firma dell'asserzione:

<Metadata>
  ...
  <Item Key="WantsSignedAssertions">false</Item>
  <Item Key="ResponsesSigned">false</Item>
</Metadata>

Richiedere risposte SAML crittografate

Per richiedere la crittografia di tutte le asserzioni in ingresso, impostare i metadati WantsEncryptedAssertions . Quando è necessaria la crittografia, il provider di identità usa una chiave pubblica di un certificato di crittografia in un profilo tecnico di Azure AD B2C. Azure AD B2C decrittografa l'asserzione della risposta usando la parte privata del certificato di crittografia.

Se si abilita la crittografia delle asserzioni, potrebbe essere necessario disabilitare anche la convalida della firma di risposta (per altre informazioni, vedere Richiedere risposte SAML firmate.

Quando i metadati WantsEncryptedAssertions sono impostati su true, i metadati del profilo tecnico di Azure AD B2C includono la sezione di crittografia . Il provider di identità legge i metadati e crittografa l'asserzione di risposta SAML con la chiave pubblica contenuta nei metadati del profilo tecnico di Azure AD B2C.

Nell'esempio seguente viene illustrata la sezione Descrittore chiave dei metadati SAML usati per la crittografia:

<SPSSODescriptor AuthnRequestsSigned="true"  protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
  <KeyDescriptor use="encryption">
    <KeyInfo xmlns="https://www.w3.org/2000/09/xmldsig#">
      <X509Data>
        <X509Certificate>valid certificate</X509Certificate>
      </X509Data>
    </KeyInfo>
  </KeyDescriptor>
  ...
</SPSSODescriptor>

Per crittografare l'asserzione di risposta SAML:

  1. Creare una chiave di criterio con un identificatore univoco. Ad esempio, B2C_1A_SAMLEncryptionCert.

  2. Nell'insieme CryptographicKeys del profilo tecnico SAML. Impostare StorageReferenceId sul nome della chiave dei criteri creata nel primo passaggio. L'ID SamlAssertionDecryption indica l'uso della chiave crittografica per crittografare e decrittografare l'asserzione della risposta SAML.

    <CryptographicKeys>
            ...
      <Key Id="SamlAssertionDecryption" StorageReferenceId="B2C_1A_SAMLEncryptionCert"/>
    </CryptographicKeys>
    
  3. Impostare i metadati del profilo tecnico WantsEncryptedAssertions su true.

    <Metadata>
      ...
      <Item Key="WantsEncryptedAssertions">true</Item>
    </Metadata>
    
  4. Aggiornare il provider di identità con i nuovi metadati del profilo tecnico di Azure AD B2C. Viene visualizzato l'elemento KeyDescriptor con la proprietà use impostata su encryption contenente la chiave pubblica del certificato.

Abilitare l'uso delle attestazioni di contesto

Nella raccolta attestazioni di input e output è possibile includere attestazioni che non vengono restituite dal provider di identità purché si imposta l'attributo DefaultValue . È anche possibile usare le attestazioni di contesto da includere nel profilo tecnico. Per usare un'attestazione di contesto:

  1. Aggiungere un tipo di attestazione all'elemento ClaimsSchema all'interno di BuildingBlocks.

  2. Aggiungere un'attestazione di output alla raccolta di input o output. Nell'esempio seguente, la prima attestazione imposta il valore del provider di identità. La seconda attestazione usa le attestazioni di contesto dell'indirizzo IP utente.

    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" AlwaysUseDefaultValue="true" />
      <OutputClaim ClaimTypeReferenceId="IpAddress" DefaultValue="{Context:IPAddress}" AlwaysUseDefaultValue="true" />
    </OutputClaims>
    

Disabilitare l'accesso singolo

Dopo la richiesta di disconnessione dell'applicazione, Azure AD B2C tenta di disconnettersi dal provider di identità SAML. Per altre informazioni, vedere Disconnessa sessione di Azure AD B2C. Per disabilitare il comportamento di disconnessione singola, impostare i metadati SingleLogoutEnabled su false.

<Metadata>
  ...
  <Item Key="SingleLogoutEnabled">false</Item>
</Metadata>

Eseguire il debug del protocollo SAML

Per configurare e eseguire il debug della federazione con un provider di identità SAML, è possibile usare un'estensione del browser per il protocollo SAML, ad esempio l'estensione SAML DevTools per Chrome, SAML-tracer per FireFox o Microsoft Edge o IE Strumenti di sviluppo.

Usando questi strumenti, è possibile controllare l'integrazione tra Azure AD B2C e il provider di identità SAML. Ad esempio:

  • Verificare se la richiesta SAML contiene una firma e determinare l'algoritmo usato per accedere alla richiesta di autorizzazione.
  • Ottenere le attestazioni (asserzioni) nella AttributeStatement sezione .
  • Verificare se il provider di identità restituisce un messaggio di errore.
  • Verificare se la sezione asserzione è crittografata.

Esempi di richiesta e risposta SAML

Security Assertion Markup Language (SAML) è uno standard aperto per lo scambio di dati di autenticazione e autorizzazione tra un provider di identità e un provider di servizi. Quando Azure AD B2C si federate con un provider di identità SAML, funge da provider di servizi che avvia una richiesta SAML al provider di identità SAML e attende una risposta SAML.

Una risposta SAML riuscita contiene asserzioni di sicurezza che sono istruzioni effettuate dai provider di identità SAML esterni. Azure AD B2C analizza e esegue il mapping delle asserzioni in attestazioni .

Richiesta di autorizzazione

Per richiedere un'autenticazione utente, Azure AD B2C invia un AuthnRequest elemento al provider di identità SAML esterno. Un elemento AuthnRequest SAML 2.0 di esempio dovrebbe essere simile al seguente:

<samlp:AuthnRequest 
    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
    ID="_11111111-0000-0000-0000-000000000000" 
    Version="2.0" 
    IssueInstant="2023-03-20T07:10:00.0000000Z" 
    Destination="https://fabrikam.com/saml2" 
    ForceAuthn="false" 
    IsPassive="false" 
    ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" 
    AssertionConsumerServiceURL="https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer" 
    ProviderName="https://fabrikam.com" 
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <saml:Issuer 
        Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_TrustFrameworkBase
    </saml:Issuer>
</samlp:AuthnRequest>

Risposta

Quando un accesso richiesto viene completato correttamente, il provider di identità SAML esterno pubblica una risposta all'endpoint del servizio consumer di asserzione di Azure AD B2C. Una risposta a un tentativo di accesso riuscito è simile all'esempio seguente:

<samlp:Response 
    ID="_98765432-0000-0000-0000-000000000000" 
    Version="2.0" 
    IssueInstant="2023-03-20T07:11:30.0000000Z" 
    Destination="https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_TrustFrameworkBase/samlp/sso/assertionconsumer" 
    InResponseTo="_11111111-0000-0000-0000-000000000000" 
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <Issuer 
        xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://fabrikam.com/
    </Issuer>
    <samlp:Status>
        <samlp:StatusCode 
            Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
    </samlp:Status>
    <Assertion 
        ID="_55555555-0000-0000-0000-000000000000" 
        IssueInstant="2023-03-20T07:40:45.505Z" 
        Version="2.0" 
        xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
        <Issuer>https://fabrikam.com/</Issuer>
        <Signature 
            xmlns="http://www.w3.org/2000/09/xmldsig#">
            ...
        </Signature>
        <Subject>
            <NameID 
                Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">ABCDEFG
            </NameID>
            ...
        </Subject>
        <AttributeStatement>
            <Attribute Name="uid">
                <AttributeValue>12345</AttributeValue>
            </Attribute>
            <Attribute Name="displayname">
                <AttributeValue>David</AttributeValue>
            </Attribute>
            <Attribute Name="email">
                <AttributeValue>david@contoso.com</AttributeValue>
            </Attribute>
            ....
        </AttributeStatement>
        <AuthnStatement 
            AuthnInstant="2023-03-20T07:40:45.505Z" 
            SessionIndex="_55555555-0000-0000-0000-000000000000">
            <AuthnContext>
                <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
            </AuthnContext>
        </AuthnStatement>
    </Assertion>
</samlp:Response>

Richiesta di disconnessione

Dopo la richiesta di disconnessione dell'applicazione, Azure AD B2C tenta di disconnettersi dal provider di identità SAML. Azure AD B2C invia un LogoutRequest messaggio all'IDP esterno per indicare che una sessione è stata terminata. L'estratto seguente contiene un esempio di elemento LogoutRequest .

Il valore dell'elemento NameID corrisponde all'utente NameID che viene disconnesso. L'elemento SessionIndex corrisponde all'attributo SessionIndex di AuthnStatement nella risposta SAML di accesso.

<samlp:LogoutRequest 
    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    ID="_22222222-0000-0000-0000-000000000000" 
    Version="2.0" 
    IssueInstant="2023-03-20T08:21:07.3679354Z" 
    Destination="https://fabrikam.com/saml2/logout" 
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <saml:Issuer 
        Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_TrustFrameworkBase
    </saml:Issuer>
    <saml:NameID>ABCDEFG</saml:NameID>
    <samlp:SessionIndex>_55555555-0000-0000-0000-000000000000</samlp:SessionIndex>
</samlp:LogoutRequest>

Passaggi successivi

  • Informazioni su come diagnosticare i problemi con i criteri personalizzati usando Application Insights.