Een SAML-technisch profiel definiëren in een aangepast beleid in Azure Active Directory B2C
Notitie
In Azure Active Directory B2C is aangepast beleid voornamelijk bedoeld om met complexe scenario's om te gaan. Voor de meeste scenario's wordt aangeraden ingebouwde gebruikersstromen te gebruiken. Als u dit nog niet hebt gedaan, vindt u meer informatie over aangepast beleid in het starterspakket in Aan de slag met aangepaste beleidsregels in Active Directory B2C.
Azure Active Directory B2C (ook wel Azure AD B2C) biedt ondersteuning voor de SAML 2.0-id-provider. In dit artikel worden de specifieke kenmerken van een technisch profiel beschreven voor de interactie met een claimprovider die ondersteuning biedt voor dit gestandaardiseerde protocol. Met een SAML-technisch profiel kunt u federeren met een op SAML gebaseerde id-provider, zoals ADFS en Salesforce. Met deze federatie kunnen uw gebruikers zich aanmelden met hun bestaande social media-identiteiten of zakelijke identiteiten.
Uitwisseling van metagegevens
Metagegevens worden gebruikt in het SAML-protocol om configuratie van een SAML-partij beschikbaar te maken, zoals een serviceprovider of id-provider. Metagegevens worden de locatie van de services, zoals aanmelden en afmelden, certificaten en aanmeldingsmethode gedefinieerd. De id-provider gebruikt de metagegevens om erachter te komen hoe ze kunnen communiceren met Azure AD B2C. De metagegevens worden geconfigureerd in een XML-indeling en kunnen worden ondertekend met een digitale handtekening, zodat de andere partij de integriteit van de metagegevens kan valideren. Wanneer Azure AD B2C in een federatief verband met een SAML-id-provider wordt gebruikt, fungeert deze als een serviceprovider die een SAML-aanvraag en wacht op een SAML-antwoord. In sommige gevallen accepteert u een ongevraagde SAML-verificatie, ook wel id-provider geïnitieerd genoemd.
Metagegevens kunnen in beide partijen worden geconfigureerd als 'Statische metagegevens' of 'Dynamische metagegevens'. In de statische modus kopieert u de volledige metagegevens van de ene partij en stelt u deze vervolgens in de andere partij in. In de dynamische modus stelt u de URL in op de metagegevens terwijl de andere partij deze configuratie dynamisch leest. De principes zijn hetzelfde; u stelt de metagegevens van het Azure AD B2C-technisch profiel in uw id-provider in en stelt dan de metagegevens van de id-provider in Azure AD B2C in.
Elke SAML-id-provider heeft verschillende stappen om de serviceprovider beschikbaar te maken en in te stellen, in dit geval om Azure AD B2C en de Azure AD B2C-metagegevens in de id-provider in te stellen. Raadpleeg de documentatie van uw id-provider voor hulp bij hoe u dit moet doen.
In het volgende voorbeeld ziet u een URL-adres voor SAML-metagegevens van een technisch profiel voor Azure AD B2C:
https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/your-policy/samlp/metadata?idptp=your-technical-profile
Vervang de volgende waarden:
- your-tenant-name met uw tenantnaam, zoals fabrikam.b2clogin.com.
- your-policy met de beleidsnaam. Gebruik het beleid waarin u het technische profiel van de SAML-provider configureert of een beleid dat uit dit beleid is opgemaakt.
- your-technical-profile met naam van het technische profiel van uw SAML-id-provider.
Certificaten digitale ondertekening uitwisselen
Als u een vertrouwensrelatie wilt opbouwen tussen Azure AD B2C en uw SAML-id-provider, moet u een geldig X509-certificaat met de persoonlijke sleutel opgeven. U uploadt het certificaat met persoonlijke sleutel (PFX-bestand) naar het Azure AD B2C-beleidssleutelarchief. Azure AD B2C ondertekent SAML-aanmeldingsaanvraag digitaal met behulp van het certificaat dat u opgeeft.
Het certificaat wordt op deze volgende manieren gebruikt:
- Azure AD B2C genereert en ondertekent een SAML-aanvraag met behulp van de Azure AD persoonlijke B2C-sleutel van het certificaat. De SAML-aanvraag wordt verzonden naar de id-provider, waarmee de aanvraag wordt gevalideerd met Azure AD openbare B2C-sleutel van het certificaat. Het Azure AD openbaar B2C-certificaat is toegankelijk via de metagegevens van het technische profiel. U kunt ook het CER-bestand handmatig uploaden naar uw SAML-id-provider.
- De id-provider ondertekent de gegevens die naar Azure AD B2C worden verzonden met de persoonlijke sleutel van het certificaat van de id-provider. Azure AD B2C valideert de gegevens met het openbare certificaat van de id-provider. Elke id-provider heeft verschillende stappen voor het instellen. Bekijk de documentatie van uw id-provider voor hulp bij hoe u dit moet doen. In Azure AD B2C moet uw beleid toegang krijgen tot de openbare sleutel van het certificaat met behulp van de metagegevens van de id-provider.
Een zelfondertekend certificaat is acceptabel voor het overgrote deel van de scenario's. Voor productieomgevingen wordt aanbevolen een X509-certificaat te gebruiken dat is uitgegeven door een certificeringsinstantie. Zoals later in dit document wordt beschreven, kunt u voor een niet-productieomgeving de SAML-ondertekening aan beide zijden uitschakelen.
In dit volgende diagram ziet u de metagegevens en certificaatuitwisseling:
De digitale versleuteling
De id-provider gebruikt altijd een openbare sleutel van een versleutelingscertificaat in een Azure AD B2C-technisch profiel om de SAML-antwoordverklaring te versleutelen. Wanneer Azure AD B2C deze gegevens moet ontsleutelen, wordt het privégedeelte van het versleutelingscertificaat gebruikt.
Om de SAML-antwoordverklaring te versleutelen:
- Upload een geldig X509-certificaat met persoonlijke sleutel (PFX-bestand) naar het Azure AD B2C-beleidssleutelarchief.
- Voeg een CryptographicKey-element met een id
SamlAssertionDecryption
toe aan de verzameling Cryptografische sleutels van het technische profiel. Stel storageReferenceId in op de naam van de beleidssleutel die stap 1 is gemaakt. - Stel metagegevens van het technische profiel WantsEncryptedAssertions in op
true
. - Werk de id-provider bij met nieuwe metagegevens van het Azure AD B2C-technische profiel. U ziet de KeyDescriptor met de eigenschap Use ingesteld op
encryption
die de openbare sleutel van uw certificaat bevat.
In dit volgende voorbeeld ziet u de sectie Sleuteldescriptor van de SAML-metagegevens die worden gebruikt voor versleuteling:
<KeyDescriptor use="encryption">
<KeyInfo xmlns="https://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>valid certificate</X509Certificate>
</X509Data>
</KeyInfo>
</KeyDescriptor>
Protocol
Het kenmerk Naam van het element Protocol moet worden ingesteld op SAML2
.
Invoerclaims
Het element InputClaims wordt gebruikt om een NameId te verzenden binnen het onderwerp van deze SAML-verificatieaanvraag. Als u dat wilt bereiken, voegt u een invoerclaim toe met een PartnerClaimType ingesteld op subject
zoals hieronder wordt weergegeven.
<InputClaims>
<InputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="subject" />
</InputClaims>
Uitvoerclaims
Het element OutputClaims bevat een lijst met claims die worden geretourneerd door de SAML-id-provider onder de sectie AttributeStatement
. Mogelijk moet u de naam van de claim die in uw beleid is gedefinieerd toewijzen aan de naam gedefinieerd in de id-provider. U kunt ook de claims opnemen die niet worden geretourneerd door de id-provider zolang u het DefaultValue
kenmerk instelt.
Uitvoerclaim van de onderwerpnaam
Als u de SAML-assertie NameId in het onderwerp wilt lezen als een genormaliseerde claim, stelt u de claim PartnerClaimType in op de waarde van het kenmerk SPNameQualifier
. Als het SPNameQualifier
kenmerk niet wordt weergegeven, stelt u de claim PartnerClaimType in op de waarde van het kenmerk NameQualifier
.
SAML-bewering:
<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>
De uitvoerclaim:
<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="http://your-idp.com/unique-identifier" />
Als beide kenmerken SPNameQualifier
of NameQualifier
niet worden weergegeven in de SAML-assertie, stelt u de claim PartnerClaimType in op assertionSubjectName
. Zorg ervoor dat de NameId de eerste waarde in assertie XML is. Wanneer u meer dan één bewering definieert, kiest Azure AD B2C de onderwerpwaarde uit de allerlaatste assertie.
In het volgende voorbeeld ziet u claims die worden geretourneerd door een SAML-id-provider:
- De claim issuerUserId wordt toegewezen aan de claim assertionSubjectName.
- De claim first_name wordt toegewezen aan de givenName.
- De claim last_name wordt toegewezen aan de claim surname.
- De claim displayName wordt toegewezen aan de claim naam.
- Claim email wordt niet aan een naam toegewezen.
Het technische profiel retourneert ook claims die niet worden geretourneerd door de id-provider:
- De claim identityProvider die de naam van de id-provider bevat.
- De claim authenticationSource met een standaardwaarde socialIdpAuthentication.
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="assertionSubjectName" />
<OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="first_name" />
<OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="last_name" />
<OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
</OutputClaims>
Het element OutputClaimsTransformations kan een verzameling OutputClaimsTransformation-elementen bevatten die worden gebruikt om uitvoerclaims te wijzigen of nieuwe te genereren.
Metagegevens
Kenmerk | Vereist | Beschrijving |
---|---|---|
PartnerEntity | Ja | URL van de metagegevens van de SAML-id-provider. Of kopieer de metagegevens van de id-provider en sluit ze in, in het CDATA-element <![CDATA[Your IDP metadata]]> . Insluiten van de metagegevens van de id-provider wordt niet aanbevolen. De id-provider kan deze instellingen wijzigen of het certificaat bijwerken. Als de metagegevens van de id-provider zijn gewijzigd, dan haalt u de nieuwe metagegevens op en werkt u uw beleid bij met de nieuwe. |
WantsSignedRequests | Nee | Hier wordt mee aangegeven of voor het technische profiel alle uitgaande verificatieaanvragen moeten worden ondertekend. Mogelijke waarden: true of false . De standaardwaarde is true . Wanneer de waarde is ingesteld op true , moet de cryptografische sleutel SamlMessageSigning worden opgegeven en worden alle uitgaande verificatieaanvragen ondertekend. Als de waarde is ingesteld op false , dan worden de parameters SigAlg en Signature (querytekenreeks of postparameter) weggelaten uit de aanvraag. Met deze metagegevens wordt ook het kenmerk AuthnRequestsSigned van metagegevens bepaald. Dit is uitvoer in de metagegevens van het Azure AD B2C-technisch profiel dat wordt gedeeld met de id-provider. Azure AD B2C de aanvraag niet ondertekent als de waarde van WantsSignedRequests in de metagegevens van het technische profiel is ingesteld op false en de metagegevens van de id-provider WantAuthnRequestsSigned is ingesteld op false of niet is opgegeven. |
XmlSignatureAlgorithm | Nee | De methode gebruikt door Azure AD B2C om de SAML-aanvraag te ondertekenen. Deze metagegevens bepalen de waarde van de parameter SigAlg (queryreeks of postparameter) in de SAML-aanvraag. Mogelijke waarden: Sha256 , Sha384 , Sha512 , of Sha1 (standaard). Zorg dat u het handtekeningalgoritmen aan beide zijden met dezelfde waarde configureert. Gebruik slechts het algoritme dat door uw certificaat wordt ondersteund. |
WantsSignedAssertions | Nee | Hiermee wordt aangegeven of alle binnenkomende asserties voor het technische profiel moeten worden ondertekend. Mogelijke waarden: true of false . De standaardwaarde is true . Als de waarde is ingesteld op true , moeten alle assertiessectie saml:Assertion die door de id-provider naar Azure AD B2C wordt verzonden, worden ondertekend. Als de waarde is ingesteld op false , moet de id-provider de asserties niet ondertekenen, maar zelfs als dat het geval is, Azure AD B2C de handtekening niet valideren. Met deze metagegevens wordt ook de vlag WantsAssertionsSigned van metagegevens bepaald. Dit is uitvoer in de metagegevens van het Azure AD B2C-technisch profiel dat wordt gedeeld met de id-provider. Als u de validatie van asserties uitschakelt, dan kunt u ook de validatie van de antwoordhandtekening uitschakelen (zie ResponsesSigned voor meer informatie). |
ResponsesSigned | Nee | Mogelijke waarden: true of false . De standaardwaarde is true . Als de waarde is ingesteld op false , moet de id-provider het SAML-antwoord niet ondertekenen, maar zelfs als dat het geval is, Azure AD B2C de handtekening niet valideren. Als de waarde is ingesteld op true , moet het SAML-antwoord dat door de id-provider naar Azure AD B2C is ondertekend en moet worden gevalideerd. Als u de validatie van SAML-antwoorden uitschakelt, dan kunt u ook de validatie van de antwoordhandtekening uitschakelen (zie WantsSignedAssertions voor meer informatie). |
WantsEncryptedAssertions | Nee | Hiermee wordt aangegeven of alle binnenkomende asserties voor het technische profiel moeten worden versleuteld. Mogelijke waarden: true of false . De standaardwaarde is false . Als de waarde is ingesteld op true , dan moeten asserties die door de id-provider worden verzonden naar Azure AD B2C worden ondertekend en moet de cryptografische sleutel samlAssertionDecryption worden opgegeven. Als de waarde is ingesteld op true , bevatten de metagegevens van het Azure AD B2C-technisch profiel de sectie versleuteling. De id-provider leest deze metagegevens en versleutelt de SAML-antwoordverklaring met de openbare sleutel die is opgegeven in de metagegevens van het Azure AD B2C-technisch profiel. Als u de validatie van asserties inschakelt, dan moet u ook de versleuteling van de antwoordhandtekening uitschakelen (zie ResponsesSigned voor meer informatie). |
NameIdPolicyFormat | Nee | Hiermee geeft u de beperkingen op voor de naam-id die moet worden gebruikt om het aangevraagde onderwerp weer te geven. Als u dit weglaat, dan kan elk type id dat door de id-provider voor het aangevraagde onderwerp wordt ondersteund, worden gebruikt. Bijvoorbeeld: urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified . NameIdPolicyFormat kan worden gebruikt in combinatie met NameIdPolicyAllowCreate. Raadpleeg documentatie van uw id-provider voor richtlijnen over welke naam-id-beleidsregels worden ondersteund. |
NameIdPolicyAllowCreate | Nee | Wanneer u NameIdPolicyFormat gebruikt, kunt u ook de eigenschap AllowCreate van NameIDPolicy opgeven. De waarde van deze metagegevens is true of false om aan te geven of de id-provider een nieuw account mag maken bij de aanmeldingsstroom. Raadpleeg de documentatie van uw id-provider voor hulp bij hoe u dit moet doen. |
AuthenticationRequestExtensions | Nee | Optionele elementen van protocolberichtextensie die zijn overeengekomen tussen Azure AD B2C en de id-provider. De extensie wordt weergegeven in een XML-indeling. U voegt XML-gegevens toe in het CDATA-element <![CDATA[Your IDP metadata]]> . Controleer documentatie van uw id-provider om te zien of het uitbreidingselement wordt ondersteund. |
IncludeAuthnContextClassReferences | Nee | Hiermee geeft u een of meer URI-verwijzingen naar het identificeren van de verificatiecontextklassen. Als u bijvoorbeeld wilt toestaan dat een gebruiker zich alleen met gebruikersnaam en wachtwoord aanmeldt, dan stelt u de waarde in op urn:oasis:names:tc:SAML:2.0:ac:classes:Password . Als u aanmelding via gebruikersnaam en wachtwoord via een beveiligde sessie (SSL/TLS) wilt toestaan, geeft u PasswordProtectedTransport op. Raadpleeg de documentatie van uw id-provider voor hulp bij de AuthnContextClassRef-URI's die worden ondersteund. Geef de meerdere URI's op als een door komma's gescheiden lijst. |
IncludeKeyInfo | Nee | Geeft aan of de SAML-verificatieaanvraag de openbare sleutel van het certificaat bevat als de binding is ingesteld op HTTP-POST . Mogelijke waarden: true of false . |
IncludeClaimResolvingInClaimsHandling | Nee | Geeft voor de invoer- en uitvoerclaims aan of claimsoplossing is opgenomen in het technische profiel. Mogelijke waarden: true of false (standaard). Als u een claimsresolver wilt gebruiken in het technische profiel, stel dit in op true . |
SingleLogoutEnabled | Nee | Hiermee wordt aangegeven of tijdens het aanmelden van het technische profiel wordt geprobeerd om zich af te melden bij federatieve id-providers. Raadpleeg Azure AD B2C-sessie afmelden voor meer informatie. Mogelijke waarden: true (standaard) of false . |
ForceAuthN | Nee | Geeft de waarde ForceAuthN door in de SAML-verificatieaanvraag om te bepalen of externe SAML IDP wordt gedwongen om de gebruiker om verificatie te vragen. Standaard stelt Azure AD B2C de waarde ForceAuthN in op false bij eerste aanmelding. Als de sessie vervolgens opnieuw wordt ingesteld (bijvoorbeeld met de prompt=login in OIDC), wordt de waarde ForceAuthN ingesteld op true . Als u het metagegevensitem instelt zoals hieronder wordt weergegeven, dan wordt de waarde voor alle aanvragen naar de externe IDP afgedwongen. Mogelijke waarden: true of false . |
ProviderName | Nee | Geeft de waarde ProviderName door in de SAML-verificatieaanvraag. |
Cryptografische sleutels
Het element CryptographicKeys bevat deze volgende kenmerken:
Kenmerk | Vereist | Beschrijving |
---|---|---|
SamlMessageSigning | Ja | Het X509-certificaat (de RSA-sleutelset) dat moet worden gebruikt om SAML-berichten te ondertekenen. Azure AD B2C gebruikt deze sleutel om de aanvragen te ondertekenen en naar de id-provider te verzenden. |
SamlAssertionDecryption | Nee* | Het X509-certificaat (de RSA-sleutelset). Een SAML-id-provider gebruikt het openbare gedeelte van het certificaat om assertie van het SAML-antwoord te versleutelen. Azure AD B2C gebruikt het privégedeelte van het certificaat om de assertie te ontsleutelen. * Vereist als externe IDP SAML-asserties versleutelt. |
MetadataSigning | Nee | Het X509-certificaat (de RSA-sleutelset) dat moet worden gebruikt om SAML-metagegevens te ondertekenen. Azure AD B2C gebruikt die sleutel om de metagegevens te ondertekenen. |
Volgende stappen
Raadpleeg de volgende artikelen voor voorbeelden van het werken met SAML-id-providers in Azure AD B2C: