Sdílet prostřednictvím


Konfigurace možností zprostředkovatele identity SAML pomocí Azure Active Directory B2C

Azure Active Directory B2C (Azure AD B2C) podporuje federaci pomocí zprostředkovatelů identit SAML 2.0. Tento článek popisuje, jak analyzovat kontrolní výrazy zabezpečení a možnosti konfigurace, které jsou k dispozici při povolení přihlášení pomocí zprostředkovatele identity SAML.

Než začnete, použijte selektor Zvolit typ zásady a zvolte typ zásady, kterou nastavujete. Azure Active Directory B2C nabízí dvě metody, jak definovat způsob interakce uživatelů s vašimi aplikacemi: prostřednictvím předdefinovaných toků uživatelů nebo prostřednictvím plně konfigurovatelných vlastních zásad. Postup vyžadovaný v tomto článku se pro každou metodu liší.

Tato funkce je dostupná jenom pro vlastní zásady. Pro postup nastavení vyberte Vlastní zásady v předchozím selektoru.

Mapování deklarací identity

Element OutputClaims obsahuje seznam deklarací identity vrácených zprostředkovatelem identity SAML. Je potřeba namapovat název deklarace identity definované ve vaší zásadě na název definovaný ve zprostředkovateli identity. Zkontrolujte u zprostředkovatele identity seznam deklarací identity (kontrolních výrazů). Můžete také zkontrolovat obsah odpovědi SAML, kterou váš zprostředkovatel identity vrací. Další informace najdete v tématu Ladění zpráv SAML. Pokud chcete přidat deklaraci identity, nejprve definujte deklaraci identity a pak přidejte deklaraci identity do výstupní kolekce deklarací identity.

Můžete také zahrnout deklarace identity, které nevrací zprostředkovatel identity, pokud nastavíte DefaultValue atribut. Výchozí hodnota může být statická nebo dynamická pomocí kontextových deklarací identity.

Element výstupní deklarace identity obsahuje následující atributy:

  • ClaimTypeReferenceId je odkaz na typ deklarace identity.
  • PartnerClaimType je název vlastnosti, která se zobrazí kontrolní výraz SAML.
  • DefaultValue je předdefinovaná výchozí hodnota. Pokud je deklarace identity prázdná, použije se výchozí hodnota. Můžete také použít překladače deklarací identity s kontextovou hodnotou, jako je ID korelace nebo IP adresa uživatele.

Název předmětu

Pokud chcete v předmětu načíst ID kontrolního výrazu SAML jako normalizovanou deklaraci identity, nastavte deklarační hodnotu PartnerClaimType na hodnotu atributuSPNameQualifier. Pokud atribut SPNameQualifiernení uvedený, nastavte deklarační hodnotu PartnerClaimType na hodnotu atributu NameQualifier .

Kontrolní výraz 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>

Výstupní deklarace identity:

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

Pokud se v kontrolním výrazu SAML nezobrazují oba SPNameQualifier atributy nebo NameQualifier , nastavte deklarační hodnotu PartnerClaimType na assertionSubjectName. Ujistěte se, že NameId je první hodnota v xml kontrolního výrazu. Když definujete více kontrolních výrazů, Azure AD B2C vybere hodnotu předmětu z posledního kontrolního výrazu.

Konfigurace vazeb protokolu SAML

Požadavky SAML se odesílají zprostředkovateli identity, jak je uvedeno v elementu metadat SingleSignOnService zprostředkovatele identity. Většina požadavků na autorizaci zprostředkovatelů identity se přenáší přímo v řetězci dotazu URL požadavku HTTP GET (protože zprávy jsou relativně krátké). Postup konfigurace vazeb pro oba požadavky SAML najdete v dokumentaci ke zprostředkovateli identity.

Následující kód XML je příkladem služby jednotného přihlašování Microsoft Entra metadat se dvěma vazbami. Má HTTP-Redirect přednost před objektem HTTP-POST , protože se zobrazuje jako první v metadatech zprostředkovatele identity 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>

Služba příjemce kontrolního výrazu

Služba Assertion Consumer Service (neboli ACS) je místo, kam se odpovědi SAML zprostředkovatele identity odesílají a přijímají Azure AD B2C. Odpovědi SAML se přenášejí do Azure AD B2C prostřednictvím vazby HTTP POST. Umístění služby ACS odkazuje na základní zásady předávající strany. Pokud jsou například předávající zásady B2C_1A_signup_signin, služba ACS je základní zásadou B2C_1A_signup_signin, například B2C_1A_TrustFrameworkBase.

Následující XML je příkladem elementu služby Azure AD zásad B2C kontrolního výrazu.

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

Konfigurace podpisu požadavku SAML

Azure AD B2C podepíše všechny odchozí žádosti o ověření pomocí kryptografického klíče SamlMessageSigning. Pokud chcete zakázat podpis požadavku SAML, nastavte WantsSignedRequests na false. Pokud jsou metadata nastavená na false, parametry SigAlg a Signature (řetězec dotazu nebo parametr post) se z požadavku vynechají.

Tato metadata také řídí atribut AuthnRequestsSigned, který je součástí metadat technického profilu Azure AD B2C, který je sdílen se zprostředkovatelem identity. Azure AD B2C nepodepíše požadavek, pokud je hodnota WantsSignedRequests v metadatech technického profilu nastavená na false hodnotu a metadata zprostředkovatele identity WantAuthnRequestsSigned jsou nastavená nebo false nezadaná.

Následující příklad odebere podpis z požadavku SAML.

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

Algoritmus podpisu

Azure AD B2C používá Sha1 k podepsání požadavku SAML. Pomocí metadat XmlSignatureAlgorithm nakonfigurujte algoritmus, který se má použít. Možné hodnoty jsou Sha256, Sha384, Sha512nebo Sha1 (výchozí). Tato metadata řídí hodnotu parametru SigAlg (řetězec dotazu nebo parametr post) v požadavku SAML. Ujistěte se, že jste na obou stranách nakonfigurovali algoritmus podpisu se stejnou hodnotou. Používejte pouze algoritmus, který váš certifikát podporuje.

Zahrnout informace o klíči

Když zprostředkovatel identity indikuje, že vazba Azure AD B2C je nastavená na HTTP-POSThodnotu , Azure AD B2C obsahuje podpis a algoritmus v těle požadavku SAML. Můžete také nakonfigurovat ID Microsoft Entra tak, aby zahrnovalo veřejný klíč certifikátu, pokud je vazba nastavená na HTTP-POST. Použijte metadata IncludeKeyInfo pro truenebo false. V následujícím příkladu Microsoft Entra ID neobsahuje veřejný klíč certifikátu.

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

Konfigurace ID názvu požadavku SAML

Element žádosti o <NameID> autorizaci SAML označuje formát identifikátoru názvu SAML. Tato část popisuje výchozí konfiguraci a postup přizpůsobení elementu NAME ID.

Upřednostňované uživatelské jméno

Během cesty uživatele přihlášení může aplikace předávající strany cílit na konkrétního uživatele. Azure AD B2C umožňuje odeslat upřednostňované uživatelské jméno zprostředkovateli identity SAML. Element InputClaims se používá k odeslání NameId v rámci předmětu žádosti o autorizaci SAML.

Pokud chcete do žádosti o autorizaci zahrnout ID názvu subjektu, přidejte <InputClaims> následující prvek hned za <CryptographicKeys>. Parametr PartnerClaimType musí být nastavený na subjecthodnotu .

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

V tomto příkladu Azure AD B2C odešle hodnotu deklarace identity signInName s NameId v rámci předmětu žádosti o autorizaci SAML.

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

Můžete použít kontextové deklarace identity, například {OIDC:LoginHint} k naplnění hodnoty deklarace identity.

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

Formát zásad ID názvů

Ve výchozím nastavení určuje zásadu urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified žádost o autorizaci SAML. Toto ID názvu označuje, že je možné použít jakýkoli typ identifikátoru podporovaného zprostředkovatelem identity pro požadovaný předmět.

Pokud chcete toto chování změnit, přečtěte si dokumentaci zprostředkovatele identity, kde najdete pokyny, které zásady ID názvů se podporují. Pak přidejte metadata NameIdPolicyFormat v odpovídajícím formátu zásad. Příklad:

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

Následující žádost o autorizaci SAML obsahuje zásadu ID názvu.

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

Povolit vytváření nových účtů

Pokud zadáte formát zásady ID názvu, můžete také zadat AllowCreate vlastnost NameIDPolicy , která označuje, jestli zprostředkovatel identity může během toku přihlašování vytvořit nový účet. Pokyny najdete v dokumentaci ke zprostředkovatele identity.

Azure AD B2C vlastnost ve výchozím nastavení vynecháAllowCreate. Toto chování můžete změnit pomocí NameIdPolicyAllowCreate metadat. Hodnota těchto metadat je true nebo false.

Následující příklad ukazuje, jak nastavit AllowCreate vlastnost na NameIDPolicytrue.

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

Následující příklad ukazuje žádost o autorizaci s AllowCreateNameIDPolicy element v žádosti o autorizaci.

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

Vynucení ověřování

Externí protokol IDP SAML můžete vynutit, aby se uživateli zobrazila výzva k ověření předáním ForceAuthN vlastnosti v požadavku na ověření SAML. Tuto vlastnost musí podporovat také váš zprostředkovatel identity.

Vlastnost ForceAuthN je logická true hodnota.false Ve výchozím nastavení Azure AD B2C nastaví hodnotu ForceAuthN na false. Pokud se relace resetuje (například pomocí parametru prompt=login v OIDC), ForceAuthN hodnota se nastaví na true. Nastavení metadat na ForceAuthNtrue vynutí hodnotu pro všechny požadavky na externí IDP.

Následující příklad ukazuje vlastnost nastavenou ForceAuthN na true:

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

Následující příklad ukazuje ForceAuthN vlastnost v žádosti o autorizaci:

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

Název poskytovatele

Volitelně můžete do žádosti o ProviderName autorizaci SAML zahrnout atribut . ProviderName Nastavte metadata tak, aby zahrnovala název zprostředkovatele pro všechny požadavky na externí ZDP SAML. Následující příklad ukazuje vlastnost nastavenou ProviderName na Contoso app:

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

Následující příklad ukazuje ProviderName vlastnost v žádosti o autorizaci:

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

Zahrnout odkazy na třídy kontextu ověřování

Žádost o autorizaci SAML může obsahovat element AuthnContext , který určuje kontext žádosti o autorizaci. Element může obsahovat odkaz na třídu kontextu ověřování, který říká zprostředkovateli identity SAML, který mechanismus ověřování má uživateli předložit.

Pokud chcete nakonfigurovat odkazy na třídu kontextu ověřování, přidejte metadata IncludeAuthnContextClassReferences . V hodnotě zadejte jeden nebo více odkazů URI identifikující třídy kontextu ověřování. Zadejte více identifikátorů URI jako seznam oddělených čárkami. Pokyny k podporovaným identifikátorům URI AuthnContextClassRef najdete v dokumentaci zprostředkovatele identity.

Následující příklad umožňuje uživatelům přihlásit se pomocí uživatelského jména i hesla a přihlásit se pomocí uživatelského jména a hesla přes chráněnou relaci (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>

Následující žádost o autorizaci SAML obsahuje odkazy na třídu kontextu ověřování.

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

Zahrnutí vlastních dat do žádosti o autorizaci

Volitelně můžete zahrnout prvky rozšíření zprávy protokolu, se kterými souhlasí Azure AD B2C i váš zprostředkovatel identity. Rozšíření je prezentováno ve formátu XML. Elementy rozšíření zahrnete přidáním dat XML do elementu <![CDATA[Your Custom XML]]>CDATA . V dokumentaci k vašemu zprostředkovateli identity zkontrolujte, jestli je element extensions podporovaný.

Následující příklad ukazuje použití dat rozšíření:

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

Poznámka

Podle specifikace SAML musí být data rozšíření xml kvalifikovaným oborem názvů (například urn:ext:custom zobrazený v ukázce) a nesmí se jednat o jeden z oborů názvů specifických pro SAML.

S rozšířením zprávy protokolu SAML vypadá odpověď SAML jako v následujícím příkladu:

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

Vyžadovat podepsané odpovědi SAML

Azure AD B2C vyžaduje podepsání všech příchozích kontrolních výrazů. Tento požadavek můžete odebrat nastavením WantsSignedAssertions na false. Zprostředkovatel identity by v tomto případě neměl kontrolní výrazy podepisovat, ale i když ano, Azure AD B2C podpis neověří.

Metadata WantsSignedAssertions řídí příznak metadat SAML WantAssertionsSigned, který je součástí metadat technického profilu Azure AD B2C, který se sdílí se zprostředkovatelem identity.

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

Pokud zakážete ověření kontrolních výrazů, můžete také zakázat ověření podpisu zprávy odpovědi. Nastavte metadata ResponsesSigned na false. Zprostředkovatel identity by v tomto případě neměl podepsat zprávu odpovědi SAML, ale i když ano, Azure AD B2C podpis neověří.

Následující příklad odebere zprávu i podpis kontrolního výrazu:

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

Vyžadování šifrovaných odpovědí SAML

Chcete-li vyžadovat šifrování všech příchozích kontrolních výrazů, nastavte WantsEncryptedAssertions metadata. Pokud se vyžaduje šifrování, zprostředkovatel identity použije veřejný klíč šifrovacího certifikátu v technickém profilu Azure AD B2C. Azure AD B2C dešifruje kontrolní výraz odpovědi pomocí privátní části šifrovacího certifikátu.

Pokud povolíte šifrování kontrolních výrazů, možná budete muset také zakázat ověřování podpisů odpovědí (další informace najdete v tématu Vyžadování podepsaných odpovědí SAML.

Pokud je metadata WantsEncryptedAssertions nastavená na truehodnotu , metadata technického profilu Azure AD B2C zahrnují část šifrování. Zprostředkovatel identity přečte metadata a zašifruje kontrolní výraz odpovědi SAML pomocí veřejného klíče, který je k dispozici v metadatech Azure AD technického profilu B2C.

Následující příklad ukazuje část Popisovač klíčů v metadatech SAML používaných k šifrování:

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

Postup šifrování kontrolního výrazu odpovědi SAML:

  1. Vytvořte klíč zásady s jedinečným identifikátorem. Například, B2C_1A_SAMLEncryptionCert.

  2. V kolekci kryptografických klíčů ve vašem technickém profilu SAML. Jako StorageReferenceId nastavte název klíče zásad, který jste vytvořili v prvním kroku. ID SamlAssertionDecryption označuje použití kryptografického klíče k šifrování a dešifrování kontrolního výrazu odpovědi SAML.

    <CryptographicKeys>
            ...
      <Key Id="SamlAssertionDecryption" StorageReferenceId="B2C_1A_SAMLEncryptionCert"/>
    </CryptographicKeys>
    
  3. Nastavte metadata technického profilu WantsEncryptedAssertions na true.

    <Metadata>
      ...
      <Item Key="WantsEncryptedAssertions">true</Item>
    </Metadata>
    
  4. Aktualizujte zprostředkovatele identity pomocí nových metadat technického profilu Azure AD B2C. Měl by se zobrazit popisovač KeyDescriptor s vlastností use nastavenou na encryption hodnotu obsahující veřejný klíč vašeho certifikátu.

Povolení použití kontextových deklarací identity

Ve vstupní a výstupní kolekci deklarací identity můžete zahrnout deklarace identity, které nevrací zprostředkovatel identity, pokud nastavíte DefaultValue atribut . K zahrnutí do technického profilu můžete také použít kontextové deklarace identity . Použití kontextové deklarace identity:

  1. Do elementu ClaimsSchema v části BuildingBlocks přidejte typ deklarace identity.

  2. Přidejte výstupní deklaraci identity do vstupní nebo výstupní kolekce. V následujícím příkladu nastaví první deklarace identity hodnotu zprostředkovatele identity. Druhá deklarace identity používá deklarace kontextu IP adresy uživatele.

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

Zakázání jednoho odhlášení

Při žádosti o odhlášení aplikace se Azure AD B2C pokusí odhlásit od zprostředkovatele identity SAML. Další informace najdete v tématu Azure AD odhlášení z relace B2C. Pokud chcete zakázat chování jednoho odhlášení, nastavte metadata SingleLogoutEnabled na false.

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

Ladění protokolu SAML

Pokud chcete pomoct s konfigurací a laděním federace pomocí zprostředkovatele identity SAML, můžete použít rozšíření prohlížeče pro protokol SAML, jako je rozšíření SAML DevTools pro Chrome, SAML-tracer pro FireFox nebo Microsoft Edge nebo IE Vývojářské nástroje.

Pomocí těchto nástrojů můžete zkontrolovat integraci mezi Azure AD B2C a vaším zprostředkovatelem identity SAML. Příklad:

  • Zkontrolujte, jestli požadavek SAML obsahuje podpis, a zjistěte, jaký algoritmus se používá k přihlášení k žádosti o autorizaci.
  • V části získejte deklarace identity (kontrolní výrazy AttributeStatement ).
  • Zkontrolujte, jestli zprostředkovatel identity vrací chybovou zprávu.
  • Zkontrolujte, jestli je oddíl kontrolního výrazu šifrovaný.

Ukázky požadavků a odpovědí SAML

Jazyk SAML (Security Assertion Markup Language) je otevřený standard pro výměnu ověřovacích a autorizačních dat mezi zprostředkovatelem identity a poskytovatelem služeb. Když Azure AD B2C federuje se zprostředkovatelem identity SAML, funguje jako zprostředkovatel služby inicializuje požadavek SAML na zprostředkovatele identity SAML a čeká na odpověď SAML.

Úspěšná odpověď SAML obsahuje kontrolní výrazy zabezpečení, což jsou příkazy provedené externími zprostředkovateli identity SAML. Azure AD B2C analyzuje a mapuje kontrolní výrazy na deklarace identity.

Žádost o autorizaci

Pokud chcete požádat o ověření uživatele, Azure AD B2C odešle AuthnRequest element externímu zprostředkovateli identity SAML. Ukázkový SAML 2.0 AuthnRequest by mohl vypadat jako v následujícím příkladu:

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

Odpověď

Po úspěšném dokončení požadovaného přihlášení odešle externí zprostředkovatel identity SAML odpověď do koncového bodu služby příjemce Azure AD kontrolního výrazu B2C. Odpověď na úspěšný pokus o přihlášení vypadá jako v následujícím příkladu:

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

Žádost o odhlášení

Při žádosti o odhlášení aplikace se Azure AD B2C pokusí odhlásit od zprostředkovatele identity SAML. Azure AD B2C odešle LogoutRequest externímu zprostředkovateli identity zprávu s oznámením, že relace byla ukončena. Následující výňatek ukazuje ukázkový LogoutRequest prvek.

Hodnota elementu NameID odpovídá NameID uživateli, který je odhlášován. Element SessionIndex odpovídá atributu SessionIndexAuthnStatement v odpovědi SAML pro přihlášení.

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

Další kroky