Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Od 1. května 2025 už nebude Azure AD B2C k dispozici k nákupu pro nové zákazníky. Další informace najdete v našich nejčastějších dotazech.
Tento článek popisuje možnosti konfigurace, které jsou k dispozici při připojování Azure Active Directory B2C (Azure AD B2C) k aplikaci SAML (Security Assertion Markup Language).
Než začnete, pomocí selektoru Zvolit typ zásady v horní části této stránky zvolte typ zásady, kterou nastavujete. Azure Active Directory B2C nabízí dvě metody pro definování způsobu 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. Kroky vyžadované v tomto článku se pro každou metodu liší.
Tato funkce je dostupná pouze pro vlastní zásady. Ve krocích nastavení vyberte vlastní politika v předchozím výběru.
Určete podpis odpovědi SAML
Můžete zadat certifikát, který se má použít k podepsání zpráv SAML. Zpráva je <samlp:Response>
prvek v SAML odpovědi odeslané do aplikace.
Pokud ještě nemáte klíč zásad, vytvořte ho. Potom nakonfigurujte SamlMessageSigning
položku metadat v technickém profilu vystavitele tokenu SAML.
StorageReferenceId
musí odkazovat na název klíče politiky.
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<!-- SAML Token Issuer technical profile -->
<TechnicalProfile Id="Saml2AssertionIssuer">
<DisplayName>Token Issuer</DisplayName>
<Protocol Name="SAML2"/>
<OutputTokenFormat>SAML2</OutputTokenFormat>
...
<CryptographicKeys>
<Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SamlMessageCert"/>
...
</CryptographicKeys>
...
</TechnicalProfile>
Algoritmus podpisu
Můžete nakonfigurovat algoritmus pro podepisování, který se používá k podepisování SAML deklarace. Možné hodnoty jsou Sha256
, , Sha384
Sha512
nebo Sha1
. Ujistěte se, že technický profil a aplikace používají stejný algoritmus podpisu. Použijte pouze algoritmus, který váš certifikát podporuje.
Nakonfigurujte algoritmus podpisu pomocí XmlSignatureAlgorithm
klíče metadat v rámci elementu předávající strany Metadata
.
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="SAML2"/>
<Metadata>
<Item Key="XmlSignatureAlgorithm">Sha256</Item>
</Metadata>
..
</TechnicalProfile>
</RelyingParty>
Zkontrolujte podpis SAML výroku
Pokud vaše aplikace očekává, že oddíl s tvrzením SAML bude podepsán, ujistěte se, že poskytovatel služby SAML nastavil WantAssertionsSigned
na true
. Pokud je nastavena na false
nebo neexistuje, sekce tvrzení se nepodepíše.
Následující příklad ukazuje metadata pro poskytovatele služby SAML s WantAssertionsSigned
nastavenou na true
.
<EntityDescriptor ID="id123456789" entityID="https://samltestapp2.azurewebsites.net" validUntil="2099-12-31T23:59:59Z" xmlns="urn:oasis:names:tc:SAML:2.0:metadata">
<SPSSODescriptor WantAssertionsSigned="true" AuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
...
</SPSSODescriptor>
</EntityDescriptor>
Podpisový certifikát
Vaše zásady musí zadat certifikát, který se použije k podepsání části SAML prohlášení SAML odpovědi. Pokud ještě nemáte klíč zásad, vytvořte ho. Potom nakonfigurujte SamlAssertionSigning
položku metadat v technickém profilu vystavitele tokenu SAML.
StorageReferenceId
musí odkazovat na název klíče politiky.
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<!-- SAML Token Issuer technical profile -->
<TechnicalProfile Id="Saml2AssertionIssuer">
<DisplayName>Token Issuer</DisplayName>
<Protocol Name="SAML2"/>
<OutputTokenFormat>SAML2</OutputTokenFormat>
...
<CryptographicKeys>
<Key Id="SamlAssertionSigning" StorageReferenceId="B2C_1A_SamlMessageCert"/>
...
</CryptographicKeys>
...
</TechnicalProfile>
Povolení šifrování v SAML prohlášeních
Pokud vaše aplikace očekává, že kontrolní výrazy SAML budou v šifrované podobě, ujistěte se, že je v zásadách Azure AD B2C povolené šifrování.
Azure AD B2C používá certifikát veřejného klíče poskytovatele služeb k šifrování kontrolního výrazu SAML. Veřejný klíč musí existovat v koncovém bodu metadat aplikace SAML s hodnotou nastavenou KeyDescriptor
use
na Encryption
, jak je znázorněno v následujícím příkladu:
<KeyDescriptor use="encryption">
<KeyInfo xmlns="https://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>valid certificate</X509Certificate>
</X509Data>
</KeyInfo>
</KeyDescriptor>
Pokud chcete službě Azure AD B2C povolit odesílání šifrovaných kontrolních výrazů, nastavte WantsEncryptedAssertion
položku metadat na true
v technickém profilu předávající strany. Můžete také nakonfigurovat algoritmus, který se používá k zašifrování tvrzení SAML.
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="SAML2"/>
<Metadata>
<Item Key="WantsEncryptedAssertions">true</Item>
</Metadata>
..
</TechnicalProfile>
</RelyingParty>
Metoda šifrování
Pokud chcete nakonfigurovat metodu šifrování, která se používá k šifrování dat kontrolního výrazu SAML, nastavte DataEncryptionMethod
klíč metadat v rámci předávající strany. Možné hodnoty jsou Aes256
(výchozí), Aes192
, Sha512
nebo Aes128
. Metadata řídí hodnotu elementu <EncryptedData>
v odpovědi SAML.
Pokud chcete nakonfigurovat metodu šifrování pro šifrování kopie klíče použitého k šifrování dat prohlášení SAML, nastavte klíč metadat KeyEncryptionMethod
v rámci spolehlivé strany. Možné hodnoty:
-
Rsa15
(výchozí): Algoritmus PKCS (Public Key Cryptography Standard) RSA Verze 1.5 -
RsaOaep
: RSA šifrovací algoritmus s optimální asymetrickou výplňovou šifrovací metodou (OAEP).
Metadata řídí hodnotu elementu <EncryptedKey>
v odpovědi SAML.
Následující příklad ukazuje EncryptedAssertion
sekci sdělení SAML. Šifrovaná datová metoda je Aes128
a šifrovaná metoda klíče je Rsa15
.
<saml:EncryptedAssertion>
<xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Type="http://www.w3.org/2001/04/xmlenc#Element">
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
<dsig:KeyInfo>
<xenc:EncryptedKey>
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<xenc:CipherData>
<xenc:CipherValue>...</xenc:CipherValue>
</xenc:CipherData>
</xenc:EncryptedKey>
</dsig:KeyInfo>
<xenc:CipherData>
<xenc:CipherValue>...</xenc:CipherValue>
</xenc:CipherData>
</xenc:EncryptedData>
</saml:EncryptedAssertion>
Formát šifrovaných tvrzení můžete změnit. Pokud chcete nakonfigurovat formát šifrování, nastavte UseDetachedKeys
klíč metadat v rámci předávající strany. Možné hodnoty: true
nebo false
(výchozí). Pokud je hodnota nastavena na true
, odpojené klíče přidávají šifrované tvrzení jako podřízeného EncryptedAssertion
místo EncryptedData
.
Nakonfigurujte metodu šifrování a formát pomocí klíčů metadat v rámci technického profilu předávající strany:
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="SAML2"/>
<Metadata>
<Item Key="DataEncryptionMethod">Aes128</Item>
<Item Key="KeyEncryptionMethod">Rsa15</Item>
<Item Key="UseDetachedKeys">false</Item>
</Metadata>
..
</TechnicalProfile>
</RelyingParty>
Konfigurace toku iniciovaného IdP
Pokud vaše aplikace očekává přijetí SAML tvrzení bez prvního odeslání požadavku SAML AuthN na zprostředkovatele identity (IdP), musíte nakonfigurovat Azure AD B2C pro tok zahájený poskytovatelem identity.
V procesu iniciovaném zprostředkovatelem identity (Azure AD B2C) se spustí proces přihlašování. Poskytovatel identity odešle nevyžádanou odpověď SAML poskytovateli služby (vaší aplikaci spoléhající strany).
V současné době nepodporujeme scénáře, kdy je iniciační zprostředkovatel identity externím zprostředkovatelem identity federovaným s Azure AD B2C, jako je Active Directory Federation Services nebo Salesforce. Tok iniciovaný IdP je podporován jenom pro ověřování místních účtů v Azure AD B2C.
Pokud chcete povolit tok iniciovaný zprostředkovatelem identity, nastavte IdpInitiatedProfileEnabled
položku metadat na true
v technickém profilu předávající strany.
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="SAML2"/>
<Metadata>
<Item Key="IdpInitiatedProfileEnabled">true</Item>
</Metadata>
..
</TechnicalProfile>
</RelyingParty>
Pro přihlášení nebo registraci uživatele prostřednictvím toku IdP použijte následující adresu URL:
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/generic/login?EntityId=<app-identifier-uri>&RelayState=<relay-state>
Nahraďte následující hodnoty:
- Nahraďte
<tenant-name>
názvem vašeho tenanta. - Nahraďte
<policy-name>
názvem zásad předávající strany SAML. - Nahraďte
<app-identifier-uri>
hodnotou v souboru metadat, napříkladidentifierUris
.https://contoso.onmicrosoft.com/app-name
- [Volitelné] nahraďte
<relay-state>
hodnotou obsaženou v autorizační žádosti, která se vrátí také v odpovědi tokenu. Parametrrelay-state
se používá ke kódování informací o stavu uživatele v aplikaci před tím, než došlo k žádosti o ověření, například ke stránce, na které se nacházel.
Ukázková zásada
K testování úplné ukázkové politiky pomocí testovací aplikace SAML můžete použít:
- Stáhněte si ukázkovou zásadu přihlášení iniciovaného SAML-SP.
- Aktualizujte
TenantId
tak, aby odpovídal názvu vašeho nájemce. Tento článek používá příklad contoso.b2clogin.com. - Ponechte název zásady B2C_1A_signup_signin_saml.
Konfigurace doby života odpovědi SAML
Můžete nakonfigurovat dobu, po kterou zůstane odpověď SAML platná. Nastavte životnost pomocí TokenLifeTimeInSeconds
položky metadat v technickém profilu vystavitele tokenu SAML. Tato hodnota je počet sekund, které mohou uplynout od NotBefore
časového razítka, vypočítaného při vydání tokenu. Výchozí životnost je 300 sekund (pět minut).
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="Saml2AssertionIssuer">
<DisplayName>Token Issuer</DisplayName>
<Protocol Name="SAML2"/>
<OutputTokenFormat>SAML2</OutputTokenFormat>
<Metadata>
<Item Key="TokenLifeTimeInSeconds">400</Item>
</Metadata>
...
</TechnicalProfile>
Konfigurovat časový posun odpovědi SAML
Můžete nakonfigurovat časový posun aplikovaný na časové razítko odpovědi SAML NotBefore
. Tato konfigurace zajišťuje, že pokud nejsou časy mezi dvěma platformami synchronizovány, bude SAML aserce stále považována za platnou, pokud se nachází v rámci této časové odchylky.
Nastavte nerovnoměrnou distribuci času pomocí TokenNotBeforeSkewInSeconds
položky metadat v technickém profilu vystavitele tokenu SAML. Šikmá hodnota je uvedena v sekundách s výchozí hodnotou 0. Maximální hodnota je 3600 (jedna hodina).
Pokud je například TokenNotBeforeSkewInSeconds
nastavena na 120
sekund:
- Token se vydává v 13:05:10 UTC.
- Token je platný od 13:03:10 UTC.
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="Saml2AssertionIssuer">
<DisplayName>Token Issuer</DisplayName>
<Protocol Name="SAML2"/>
<OutputTokenFormat>SAML2</OutputTokenFormat>
<Metadata>
<Item Key="TokenNotBeforeSkewInSeconds">120</Item>
</Metadata>
...
</TechnicalProfile>
Odebrání milisekund z data a času
Můžete určit, jestli se v odpovědi SAML odeberou milisekundy z hodnot data a času. (Mezi tyto hodnoty patří IssueInstant
, NotBefore
, NotOnOrAfter
a AuthnInstant
.) Pokud chcete odebrat milisekundy, nastavte RemoveMillisecondsFromDateTime
klíč metadat v rámci předávající strany. Možné hodnoty: false
(výchozí) nebo true
.
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="SAML2" />
<Metadata>
<Item Key="RemoveMillisecondsFromDateTime">true</Item>
</Metadata>
<OutputClaims>
...
</OutputClaims>
<SubjectNamingInfo ClaimType="objectId" ExcludeAsClaim="true" />
</TechnicalProfile>
</RelyingParty>
Použijte ID vystavitele k přepsání URI vystavitele
Pokud máte více aplikací SAML, které závisí na různých entityID
hodnotách, můžete hodnotu IssuerUri
přepsat v souboru závislé strany. Pokud chcete upravit identifikátor URI vystavujícího, zkopírujte technický profil s Saml2AssertionIssuer
ID ze základního souboru a změňte hodnotu IssuerUri
.
Návod
Zkopírujte oddíl <ClaimsProviders>
ze základu a zachovejte tyto prvky v rámci poskytovatele deklarací: <DisplayName>Token Issuer</DisplayName>
, <TechnicalProfile Id="Saml2AssertionIssuer">
a <DisplayName>Token Issuer</DisplayName>
.
Příklad:
<ClaimsProviders>
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="Saml2AssertionIssuer">
<DisplayName>Token Issuer</DisplayName>
<Metadata>
<Item Key="IssuerUri">customURI</Item>
</Metadata>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
</ClaimsProviders>
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpInSAML" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="SAML2" />
<Metadata>
…
Správa relace
Relaci mezi Azure AD B2C a aplikací předávající strany SAML můžete spravovat pomocí UseTechnicalProfileForSessionManagement
elementu a SamlSSOSessionProvider.
Vynucení opětovného ověření uživatelů
Aby se uživatelé mohli znovu ověřit, může aplikace do žádosti o ověření SAML zahrnout ForceAuthn
atribut. Atribut ForceAuthn
je logická hodnota. Pokud je nastaveno na true
hodnotu, relace uživatele se v Azure AD B2C zneplatní a uživatel bude nucen se znovu přihlásit.
Následující požadavek na ověření SAML ukazuje, jak nastavit ForceAuthn
atribut na true
.
<samlp:AuthnRequest
Destination="https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_SAML2_signup_signin/samlp/sso/login"
ForceAuthn="true" ...>
...
</samlp:AuthnRequest>
Podepsání metadat SAML zprostředkovatele identity Azure AD B2C
Pokud to aplikace vyžaduje, můžete Azure AD B2C instruovat, aby podepsal svůj dokument metadat pro zprostředkovatele identity SAML. Pokud ještě nemáte klíč zásad, vytvořte ho. Potom nakonfigurujte MetadataSigning
položku metadat v technickém profilu vystavitele tokenu SAML.
StorageReferenceId
musí odkazovat na název klíče politiky.
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<!-- SAML Token Issuer technical profile -->
<TechnicalProfile Id="Saml2AssertionIssuer">
<DisplayName>Token Issuer</DisplayName>
<Protocol Name="SAML2"/>
<OutputTokenFormat>SAML2</OutputTokenFormat>
...
<CryptographicKeys>
<Key Id="MetadataSigning" StorageReferenceId="B2C_1A_SamlMetadataCert"/>
...
</CryptographicKeys>
...
</TechnicalProfile>
Ladění protokolu SAML
Pokud chcete pomoct s konfigurací a laděním integrace s vaším poskytovatelem služeb, můžete použít rozšíření prohlížeče pro protokol SAML. Rozšíření prohlížeče zahrnují rozšíření SAML DevTools pro Chrome, SAML-tracer pro Firefox a vývojářské nástroje pro Edge nebo Internet Explorer.
Pomocí těchto nástrojů můžete zkontrolovat integraci mezi vaší aplikací a Azure AD B2C. Například:
- Zkontrolujte, jestli požadavek SAML obsahuje podpis, a zjistěte, jaký algoritmus se používá k přihlášení k žádosti o autorizaci.
- Zkontrolujte, jestli Azure AD B2C vrací chybovou zprávu.
- Zkontrolujte, jestli je sekce prohlášení zašifrovaná.
Další kroky
- Další informace o protokolu SAML najdete na webu OASIS.
- Získejte testovací webovou aplikaci SAML z úložiště komunity Azure AD B2C na GitHubu.