Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Vanaf 1 mei 2025 is Azure AD B2C niet meer beschikbaar voor nieuwe klanten. Meer informatie vindt u in onze veelgestelde vragen.
In dit artikel worden de configuratieopties beschreven die beschikbaar zijn wanneer u Azure Active Directory B2C (Azure AD B2C) verbindt met uw SAML-toepassing (Security Assertion Markup Language).
Voordat u begint, gebruikt u de selector Een beleidstype kiezen boven aan deze pagina om het type beleid te kiezen dat u instelt. U kunt in Azure Active Directory B2C op twee manieren definiëren hoe gebruikers met uw toepassingen communiceren: via vooraf gedefinieerde gebruikersstromen of via volledig configureerbaar aangepast beleid. De stappen die in dit artikel zijn vereist, verschillen voor elke methode.
Deze functie is alleen beschikbaar voor aangepast beleid. Voor installatiestappen selecteert u Aangepast beleid in de voorgaande selector.
Een SAML-antwoordhandtekening opgeven
U kunt een certificaat opgeven dat moet worden gebruikt om de SAML-berichten te ondertekenen. Het bericht is het <samlp:Response>
element in het SAML-antwoord dat naar de toepassing wordt verzonden.
Als u nog geen beleidssleutel hebt, maakt u er een. Configureer vervolgens het SamlMessageSigning
metagegevensitem in het technische profiel van de SAML-tokenverlener.
StorageReferenceId
moet verwijzen naar de naam van de beleidssleutel.
<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>
Handtekening-algoritme
U kunt het handtekeningalgoritme configureren dat wordt gebruikt om de SAML-assertie te ondertekenen. Mogelijke waarden zijnSha256
, Sha384
, of Sha512
Sha1
. Zorg ervoor dat het technische profiel en de toepassing hetzelfde handtekeningalgoritmen gebruiken. Gebruik slechts het algoritme dat door uw certificaat wordt ondersteund.
Configureer het handtekeningalgoritmen met behulp van de XmlSignatureAlgorithm
metagegevenssleutel in het relying party-element Metadata
.
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="SAML2"/>
<Metadata>
<Item Key="XmlSignatureAlgorithm">Sha256</Item>
</Metadata>
..
</TechnicalProfile>
</RelyingParty>
De SAML-assertiehandtekening controleren
Wanneer uw toepassing verwacht dat de sectie SAML-assertie is ondertekend, moet u ervoor zorgen dat de SAML-serviceprovider de WantAssertionsSigned
waarde instelt op true
. Als deze is ingesteld op false
of niet bestaat, wordt de assertiesectie niet ondertekend.
In het volgende voorbeeld ziet u metagegevens voor een SAML-serviceprovider, waarbij WantAssertionsSigned
deze is ingesteld op 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>
Handtekeningcertificaat
Uw beleid moet een certificaat opgeven dat moet worden gebruikt om de sectie SAML-asserties van het SAML-antwoord te ondertekenen. Als u nog geen beleidssleutel hebt, maakt u er een. Configureer vervolgens het SamlAssertionSigning
metagegevensitem in het technische profiel van de SAML-tokenverlener.
StorageReferenceId
moet verwijzen naar de naam van de beleidssleutel.
<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>
Versleuteling in SAML-asserties inschakelen
Wanneer uw toepassing verwacht dat SAML-asserties een versleutelde indeling hebben, moet u ervoor zorgen dat versleuteling is ingeschakeld in het Azure AD B2C-beleid.
Azure AD B2C maakt gebruik van het openbare-sleutelcertificaat van de serviceprovider om de SAML-assertie te versleutelen. De openbare sleutel moet aanwezig zijn in het metagegevenseindpunt van de SAML-toepassing met de KeyDescriptor
use
waarde ingesteld op Encryption
, zoals wordt weergegeven in het volgende voorbeeld:
<KeyDescriptor use="encryption">
<KeyInfo xmlns="https://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>valid certificate</X509Certificate>
</X509Data>
</KeyInfo>
</KeyDescriptor>
Om Azure AD B2C versleutelde asserties te laten verzenden, stel het WantsEncryptedAssertion
metagegevensitem in op true
binnen het technische profiel van de relying party. U kunt ook het algoritme configureren dat wordt gebruikt voor het versleutelen van de SAML-assertie.
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="SAML2"/>
<Metadata>
<Item Key="WantsEncryptedAssertions">true</Item>
</Metadata>
..
</TechnicalProfile>
</RelyingParty>
Versleutelingsmethode
Als u de versleutelingsmethode wilt configureren die wordt gebruikt voor het versleutelen van de SAML-assertiegegevens, stelt u de DataEncryptionMethod
metagegevenssleutel in de relying party in. Mogelijke waarden zijn Aes256
(standaard), Aes192
of Sha512
Aes128
. De metagegevens bepalen de waarde van het <EncryptedData>
element in het SAML-antwoord.
Als u de versleutelingsmethode wilt configureren voor het versleutelen van de kopie van de sleutel die is gebruikt voor het versleutelen van de SAML-assertiegegevens, stelt u de KeyEncryptionMethod
metagegevenssleutel in de Relying Party in. Mogelijke waarden zijn:
-
Rsa15
(standaard): RSA PUBLIC Key Cryptography Standard (PKCS) versie 1.5-algoritme. -
RsaOaep
: RSA Optimal Asymmetric Encryption Padding (OAEP) versleutelingsalgoritme.
De metagegevens bepalen de waarde van het <EncryptedKey>
element in het SAML-antwoord.
In het volgende voorbeeld ziet u de EncryptedAssertion
sectie van een SAML-assertie. De versleutelde gegevensmethode is Aes128
en de versleutelde sleutelmethode is 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>
U kunt de indeling van de versleutelde asserties wijzigen. Als u de versleutelingsindeling wilt configureren, stelt u de UseDetachedKeys
metagegevenssleutel in binnen de vertrouwende partij. Mogelijke waarden: true
of false
(standaard). Wanneer de waarde is ingesteld op true
, voegen de losgekoppelde sleutels de versleutelde assertie toe als een onderliggend element van EncryptedAssertion
in plaats van EncryptedData
.
Configureer de versleutelingsmethode en -indeling met behulp van de metagegevenssleutels in het technische profiel van de relying party:
<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>
Door IdP geïnitieerde stroom configureren
Wanneer uw toepassing verwacht een SAML-assertie te ontvangen zonder eerst een SAML-verificatieaanvraag te verzenden naar de id-provider (IdP), moet u Azure AD B2C configureren voor door IdP geïnitieerde stroom.
In de door IdP geïnitieerde stroom start de id-provider (Azure AD B2C) het aanmeldingsproces. De id-provider verzendt een ongevraagd SAML-antwoord naar de serviceprovider (uw relying party-toepassing).
Momenteel bieden we geen ondersteuning voor scenario's waarbij de initiërende id-provider een externe id-provider is die is gefedereerd met Azure AD B2C, zoals Active Directory Federation Services of Salesforce. Door IdP geïnitieerde stroom wordt alleen ondersteund voor verificatie van lokale accounts in Azure AD B2C.
Als u door IdP geïnitieerde stroom wilt inschakelen, stelt u het IdpInitiatedProfileEnabled
metagegevensitem true
in op het technische profiel van de relying party.
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="SAML2"/>
<Metadata>
<Item Key="IdpInitiatedProfileEnabled">true</Item>
</Metadata>
..
</TechnicalProfile>
</RelyingParty>
Gebruik de volgende URL om een gebruiker aan te melden of te registreren via de door IdP geïnitieerde stroom:
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/generic/login?EntityId=<app-identifier-uri>&RelayState=<relay-state>
Vervang de volgende waarden:
- Vervang door
<tenant-name>
de naam van uw tenant. - Vervang door
<policy-name>
de naam van uw SAML Relying Party-beleid. - Vervang
<app-identifier-uri>
door deidentifierUris
waarde in het metagegevensbestand, zoalshttps://contoso.onmicrosoft.com/app-name
. - [Optioneel] vervang door
<relay-state>
een waarde die is opgenomen in de autorisatieaanvraag die ook wordt geretourneerd in het tokenantwoord. Derelay-state
parameter wordt gebruikt om informatie over de status van de gebruiker in de app te coderen voordat de verificatieaanvraag is opgetreden, zoals de pagina waarop ze zich bevonden.
Voorbeeldbeleid
U kunt een volledig voorbeeldbeleid gebruiken voor het testen met de SAML-test-app:
- Download het door SAML-SP geïnitieerde aanmeldingsvoorbeeldbeleid.
- Werk
TenantId
bij zodat deze overeenkomt met de naam van uw tenant. In dit artikel wordt het voorbeeld contoso.b2clogin.com gebruikt. - Houd de beleidsnaam B2C_1A_signup_signin_saml.
De levensduur van het SAML-antwoord configureren
U kunt de tijd configureren waarop het SAML-antwoord geldig blijft. Stel de levensduur in door het TokenLifeTimeInSeconds
metagegevensitem te gebruiken binnen het technische profiel van de SAML-tokenuitgever. Deze waarde is het aantal seconden dat kan worden verstreken vanaf het NotBefore
tijdstempel, berekend op de uitgiftetijd van het token. De standaardlevensduur is 300 seconden (vijf minuten).
<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>
De tijdafwijking van een SAML-antwoord configureren
U kunt de tijdsverschil configureren die is toegepast op het SAML-reactietijdstempel NotBefore
. Deze configuratie zorgt ervoor dat als de tijden tussen twee platformen niet synchroon lopen, de SAML-assertie nog steeds als geldig wordt beschouwd als deze binnen dit tijdverschil valt.
Stel de tijdsafwijking in met behulp van het TokenNotBeforeSkewInSeconds
metagegevensitem in het technische profiel van de SAML-tokenverlener. De scheefheidswaarde wordt in seconden gegeven, met een standaardwaarde van 0. De maximumwaarde is 3600 (één uur).
Wanneer TokenNotBeforeSkewInSeconds
bijvoorbeeld is ingesteld op 120
seconden:
- Het token wordt uitgegeven om 13:05:10 UTC.
- Het token is geldig van 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>
Milliseconden verwijderen uit de datum en tijd
U kunt opgeven of milliseconden worden verwijderd uit datum- en tijdwaarden binnen het SAML-antwoord. (Deze waarden omvattenIssueInstant
, NotBefore
, en NotOnOrAfter
AuthnInstant
.) Als u de milliseconden wilt verwijderen, stelt u de RemoveMillisecondsFromDateTime
metagegevenssleutel in de relying party in. Mogelijke waarden: false
(standaard) of 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>
Een verlener-id gebruiken om de URI van een verlener te overschrijven
Als u meerdere SAML-toepassingen hebt die afhankelijk zijn van verschillende entityID
waarden, kunt u de IssuerUri
waarde in uw Relying Party-bestand overschrijven. Als u de URI van de verlener wilt overschrijven, kopieert u het technische profiel met de Saml2AssertionIssuer
id uit het basisbestand en overschrijft u de IssuerUri
waarde.
Aanbeveling
Kopieer de <ClaimsProviders>
sectie uit de basis en bewaar deze elementen binnen de claimprovider: <DisplayName>Token Issuer</DisplayName>
, <TechnicalProfile Id="Saml2AssertionIssuer">
en <DisplayName>Token Issuer</DisplayName>
.
Voorbeeld:
<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>
…
Een sessie beheren
U kunt de sessie tussen Azure AD B2C en de SAML Relying Party-toepassing beheren met behulp van het UseTechnicalProfileForSessionManagement
element en de SamlSSOSessionProvider.
Gebruikers dwingen om opnieuw te verifiëren
Als u wilt afdwingen dat gebruikers zich opnieuw verifiëren, kan de toepassing het ForceAuthn
kenmerk opnemen in de SAML-verificatieaanvraag. Het ForceAuthn
kenmerk is een Booleaanse waarde. Wanneer deze is ingesteld true
op, wordt de sessie van de gebruiker ongeldig gemaakt op Azure AD B2C en wordt de gebruiker gedwongen om opnieuw te verifiëren.
De volgende SAML-verificatieaanvraag laat zien hoe u het ForceAuthn
kenmerk instelt op true
.
<samlp:AuthnRequest
Destination="https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1A_SAML2_signup_signin/samlp/sso/login"
ForceAuthn="true" ...>
...
</samlp:AuthnRequest>
De Azure AD B2C IdP SAML-metagegevens ondertekenen
U kunt Azure AD B2C opdracht geven om het metagegevensdocument voor de SAML-id-provider te ondertekenen als de toepassing dit vereist. Als u nog geen beleidssleutel hebt, maakt u er een. Configureer vervolgens het MetadataSigning
metagegevensitem in het technische profiel van de SAML-tokenverlener.
StorageReferenceId
moet verwijzen naar de naam van de beleidssleutel.
<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>
Fouten opsporen in het SAML-protocol
Als u wilt helpen bij het configureren en opsporen van fouten in de integratie met uw serviceprovider, kunt u een browserextensie voor het SAML-protocol gebruiken. Browserextensies omvatten de EXTENSIE SAML DevTools voor Chrome, SAML-tracer voor Firefox en ontwikkelhulpprogramma's voor Edge of Internet Explorer.
Met deze hulpprogramma's kunt u de integratie tussen uw toepassing en Azure AD B2C controleren. Voorbeeld:
- Controleer of de SAML-aanvraag een handtekening bevat en bepaal welk algoritme wordt gebruikt om de autorisatieaanvraag aan te melden.
- Controleer of Azure AD B2C een foutbericht retourneert.
- Controleer of de assertiesectie is versleuteld.
Volgende stappen
- Meer informatie over het SAML-protocol vindt u op de website van OASIS.
- Haal de SAML-testweb-app op uit de GitHub-communityopslagplaats van Azure AD B2C.