AD FS toevoegen als een SAML-id-provider met behulp van aangepast beleid in Azure Active Directory B2C
Voordat u begint, gebruikt u de selector Een beleidstype kiezen 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 configuratiestappen selecteert u Aangepast beleid in de voorgaande selector.
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.
In dit artikel wordt beschreven hoe u aanmelding inschakelt voor een AD FS-gebruikersaccount met behulp van aangepaste beleidsregels in Azure Active Directory B2C (Azure AD B2C). U schakelt aanmelding in door een SAML-id-provider toe te voegen aan een aangepast beleid.
Vereisten
- Voer de stappen uit die in Aan de slag met aangepast beleid in Active Directory B2C worden beschreven.
- Als u dit nog niet hebt gedaan, registreert u een webtoepassing.
Een zelfondertekend certificaat maken
Als u nog geen certificaat hebt, kunt u een zelfondertekend certificaat gebruiken. Een zelfondertekend certificaat is een beveiligingscertificaat dat niet is ondertekend door een certificeringsinstantie (CA) en geen beveiligingsgaranties biedt van een certificaat dat is ondertekend door een CA.
Gebruik in Windows de cmdlet New-SelfSignedCertificate in PowerShell om een certificaat te genereren.
Voer de volgende PowerShell-opdracht uit om een zelfondertekend certificaat te genereren. Wijzig indien van toepassing het argument
-Subject
voor uw toepassing en de Azure AD B2C-tenantnaam, zoalscontosowebapp.contoso.onmicrosoft.com
. U kunt ook de-NotAfter
-datum aanpassen om een andere vervaldatum voor het certificaat op te geven.New-SelfSignedCertificate ` -KeyExportPolicy Exportable ` -Subject "CN=yourappname.yourtenant.onmicrosoft.com" ` -KeyAlgorithm RSA ` -KeyLength 2048 ` -KeyUsage DigitalSignature ` -NotAfter (Get-Date).AddMonths(12) ` -CertStoreLocation "Cert:\CurrentUser\My"
Ga op een Windows-computer naar Gebruikerscertificaten beheren en selecteer dit
Selecteer onder Certificaten - huidige gebruiker de optie Persoonlijk>Certificaten>yourappname.yourtenant.onmicrosoft.com.
Selecteer het certificaat en vervolgens Actie>Alle taken>Exporteren.
Selecteer Volgende>Ja, exporteer de persoonlijke sleutel>Volgende.
Accepteer de standaardwaarden voor Exportbestandsindeling en selecteer vervolgens Volgende.
Schakel de optie Wachtwoord in, voer een wachtwoord in voor het certificaat en selecteer vervolgens Volgende.
Als u een locatie wilt opgeven om uw certificaat in op te slaan, selecteert u Bladeren en navigeert u naar de gewenste map.
Voer in het venster Opslaan als een bestandsnaam in en selecteer vervolgens Opslaan.
Selecteer Volgende>voltooien.
Azure AD B2C accepteert alleen het PFX-bestandswachtwoord als het wachtwoord is versleuteld met de TripleDES-SHA1-optie in het hulpprogramma voor het exporteren vanuit het Windows-certificaatarchief, in plaats van AES256-SHA256.
Een beleidssleutel maken
U moet uw certificaat opslaan in uw Azure AD B2C-tenant.
- Meld u aan bij de Azure-portal.
- Als u toegang hebt tot meerdere tenants, selecteert u het pictogram Instellingen in het bovenste menu om over te schakelen naar uw Azure AD B2C-tenant in het menu Mappen en abonnementen.
- Kies Alle services linksboven in de Azure Portal, zoek Azure AD B2C en selecteer deze.
- Selecteer Identity Experience Framework op de overzichtspagina.
- Selecteer Beleidssleutels en vervolgens Toevoegen.
- Voor Opties kiest u
Upload
. - Voer een naam in voor de beleidssleutel. Bijvoorbeeld
SAMLSigningCert
. Het voorvoegselB2C_1A_
wordt automatisch toegevoegd aan de naam van uw sleutel. - Blader naar het PFX-certificaatbestand en selecteer het bestand met de persoonlijke sleutel.
- Klik op Create.
Een claimprovider toevoegen
Als u wilt dat gebruikers zich aanmelden met een AD FS-account, moet u het account definiëren als een claimprovider waarmee Azure AD B2C kan communiceren via een eindpunt. Het eindpunt biedt een set claims die worden gebruikt door Azure AD B2C om te controleren of een specifieke gebruiker is geverifieerd.
U kunt een AD FS-account definiëren als een claimprovider door het toe te voegen aan het element ClaimsProviders in het extensiebestand van uw beleid. Zie een SAML-id-provider definiëren voor meer informatie.
Open het bestand TrustFrameworkExtensions.xml.
Ga naar het element ClaimsProviders. Als dit niet voorkomt, voegt u het toe onder het hoofdelement.
Voeg als volgt een nieuwe ClaimsProvider toe:
<ClaimsProvider> <Domain>contoso.com</Domain> <DisplayName>Contoso</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="Contoso-SAML2"> <DisplayName>Contoso</DisplayName> <Description>Login with your AD FS account</Description> <Protocol Name="SAML2"/> <Metadata> <Item Key="WantsEncryptedAssertions">false</Item> <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item> </Metadata> <CryptographicKeys> <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SAMLSigningCert"/> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="userPrincipalName" /> <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name"/> <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name"/> <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email"/> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name"/> <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication"/> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp"/> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
Vervang
your-AD-FS-domain
door de naam van uw AD FS-domein en vervang de waarde van de identityProvider-uitvoerclaim door uw DNS (willekeurige waarde die uw domein aangeeft).Ga naar de
<ClaimsProviders>
-sectie en voeg het volgende XML-fragment toe. Als uw beleid al het technische profiel voorSM-Saml-idp
bevat, gaat u verder met de volgende stap. Zie Sessiebeheer voor eenmalige aanmelding voor meer informatie.<ClaimsProvider> <DisplayName>Session Management</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="SM-Saml-idp"> <DisplayName>Session Management Provider</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <Metadata> <Item Key="IncludeSessionIndex">false</Item> <Item Key="RegisterServiceProviders">false</Item> </Metadata> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
Sla het bestand op.
Een gebruikerstraject toevoegen
Op dit punt is de id-provider ingesteld, maar is deze nog niet beschikbaar op een van de aanmeldingspagina's. Als u niet over een eigen aangepast gebruikerstraject beschikt, maakt u een duplicaat van een bestaand gebruikerstrajectsjabloon. In het andere geval gaat u verder met de volgende stap.
- Open het bestand TrustFrameworkBase.xml vanuit het starterspakket.
- Zoek en kopieer de volledige inhoud van het element UserJourney dat
Id="SignUpOrSignIn"
bevat. - Open het bestand TrustFrameworkExtensions.xml en ga naar het element UserJourneys. Als het element niet voorkomt, voegt u het toe.
- Plak de volledige inhoud van het element UserJourney dat u hebt gekopieerd als een onderliggend element van het element UserJourneys.
- Wijzig de naam van de id van het gebruikerstraject. Bijvoorbeeld
Id="CustomSignUpSignIn"
.
De id-provider toevoegen aan een gebruikerstraject
Nu u over een gebruikerstraject beschikt, voegt u de nieuwe id-provider toe aan het gebruikerstraject. U voegt eerst een aanmeldingsknop toe en koppelt de knop aan een actie. De actie is het technische profiel dat u eerder hebt gemaakt.
Ga in het gebruikerstraject naar het element van de indelingsstap dat
Type="CombinedSignInAndSignUp"
ofType="ClaimsProviderSelection"
bevat. Dit is doorgaans de eerste indelingsstap. Het element ClaimsProviderSelections bevat een lijst met id-providers waarmee een gebruiker zich kan aanmelden. De volgorde van de elementen bepaalt de volgorde van de aanmeldingsknoppen die aan de gebruiker worden gepresenteerd. Voeg een XML-element ClaimsProviderSelection toe. Stel de waarde van TargetClaimsExchangeId in op een beschrijvende naam.Voeg in de volgende indelingsstap een element ClaimsExchange toe. Stel de id in op de waarde van de Exchange-id van de doelclaims. Werk de waarde van TechnicalProfileReferenceId bij naar de id van het technische profiel dat u eerder hebt gemaakt.
In de volgende XML ziet u de eerste twee indelingsstappen van een gebruikerstraject met de id-provider:
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
...
<ClaimsProviderSelection TargetClaimsExchangeId="ContosoExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="Contoso-SAML2" />
</ClaimsExchanges>
</OrchestrationStep>
Het Relying Party-beleid configureren
Met het Relying Party-beleid, bijvoorbeeld SignUpSignIn.xml, wordt het gebruikerstraject opgegeven dat door Azure AD B2C wordt uitgevoerd. Ga naar het element DefaultUserJourney binnen de Relying Party. Werk de ReferenceId bij zodat deze overeenkomt met de gebruikerstraject-id, waarin u de id-provider hebt toegevoegd.
In het volgende voorbeeld is voor het CustomSignUpSignIn
-gebruikerstraject de ReferenceId ingesteld op CustomSignUpSignIn
:
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
Het aangepaste beleid uploaden
- Meld u aan bij de Azure-portal.
- Selecteer het pictogram Map + Abonnement in de werkbalk van de portal en selecteer vervolgens de map die uw Azure AD B2C-tenant bevat.
- Zoek en selecteer Azure AD B2C in de Azure-portal.
- Selecteer onder Beleid de optie Identity Experience Framework.
- Selecteer Aangepast beleid uploaden en upload vervolgens de twee beleidsbestanden die u hebt gewijzigd, in de volgende volgorde: het uitbreidingsbeleid, bijvoorbeeld
TrustFrameworkExtensions.xml
en vervolgens het Relying Party-beleid, zoalsSignUpSignIn.xml
.
Een vertrouwensrelatie van een relying party van AD FS configureren
Als u AD FS wilt gebruiken als een id-provider in Azure AD B2C, moet u een AD FS Relying Party Trust maken met de Azure AD B2C SAML-metagegevens. 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
Wanneer u een aangepast domein gebruikt, gebruikt u de volgende indeling:
https://your-domain-name/your-tenant-name.onmicrosoft.com/your-policy/samlp/metadata?idptp=your-technical-profile
Vervang de volgende waarden:
- your-tenant-name met uw tenantnaam, zoals your-tenant.onmicrosoft.com.
- your-domain-name met uw aangepaste domeinnaam, zoals login.contoso.com.
- your-policy met de beleidsnaam. Bijvoorbeeld B2C_1A_signup_signin_adfs.
- your-technical-profile met de naam van het technische profiel van uw SAML-id-provider. Bijvoorbeeld Contoso-SAML2.
Open een browser en navigeer naar de URL. Zorg ervoor dat u de juiste URL invoert en dat u toegang hebt tot het XML-metagegevensbestand. Als u een nieuwe relying party-vertrouwensrelatie wilt toevoegen met behulp van de AD FS-beheermodule en de instellingen handmatig wilt configureren, voert u de volgende procedure uit op een federatieserver. Lidmaatschap van Beheer istrators of gelijkwaardig op de lokale computer is de minimale vereiste om deze procedure te voltooien.
Selecteer in serverbeheer Tools en daarna AD FS-beheer.
Selecteer Relying Party Trust toevoegen.
Kies op de welkomstpagina Claims aware en selecteer Vervolgens Start.
Selecteer op de pagina Gegevensbron selecteren Gegevens importeren over de relying party die online of in een lokaal netwerk publiceert, geef uw Azure AD B2C-metagegevens-URL op en selecteer vervolgens Volgende.
Voer op de pagina Weergavenaam opgeven een weergavenaam in onder Notities, voer een beschrijving in voor deze relying party-vertrouwensrelatie en selecteer vervolgens Volgende.
Op de pagina Toegangsbeheerbeleid kiezen, selecteert u een beleid en vervolgens Volgende.
Controleer de instellingen op de pagina Klaar om vertrouwensrelatie toe te voegen en selecteer vervolgens Volgende om de informatie van de vertrouwensrelatie van de Relying Party op te slaan.
Selecteer Sluiten op de pagina Voltooien. Met deze actie wordt automatisch het dialoogvenster Claimregels bewerken weergegeven.
Selecteer Regel toevoegen.
Selecteer in de claimregelsjabloon LDAP-kenmerken verzenden als claims.
Geef bij Naam van claimregel een claimregelnaam op. Voor het kenmerkarchief selecteert u Active Directory selecteren, voegt u de volgende claims toe en selecteert u Voltooien en OK.
LDAP-kenmerk Type uitgaande claim Principal-naam van gebruiker userPrincipalName Achternaam family_name Given-Name given_name E-mailadres e-mailadres Display-Name name Houd er rekening mee dat sommige namen niet worden weergegeven in de vervolgkeuzelijst Type uitgaande claim. U moet ze handmatig typen. (De vervolgkeuzelijst kan worden bewerkt).
Op basis van uw certificaattype moet u mogelijk het HASH-algoritme instellen. Selecteer in het eigenschappenvenster van de Relying Party Trust (B2C Demo) het tabblad Geavanceerd en wijzig het algoritme Secure hash in
SHA-256
en selecteer OK.Selecteer in serverbeheer Tools en daarna AD FS-beheer.
Selecteer de relying party-vertrouwensrelatie die u hebt gemaakt, selecteer Bijwerken in federatiemetagegevens en selecteer vervolgens Bijwerken.
Uw aangepaste beleid testen
- Meld u aan bij de Azure-portal.
- Als u toegang hebt tot meerdere tenants, selecteert u het pictogram Instellingen in het bovenste menu om over te schakelen naar uw Azure AD B2C-tenant in het menu Mappen en abonnementen.
- Zoek en selecteer Azure AD B2C in de Azure-portal.
- Selecteer onder Beleid de optie Identity Experience Framework
- Selecteer uw Relying Party-beleid, bijvoorbeeld
B2C_1A_signup_signin
. - Selecteer voor Toepassing een webtoepassing die u eerder hebt geregistreerd. De antwoord-URL moet
https://jwt.ms
weergeven. - Selecteer de knop Nu uitvoeren.
- Selecteer op de registratie- of aanmeldingspagina Contoso AD FS om u aan te melden bij contoso AD FS-id-provider.
Als het aanmeldingsproces is voltooid, wordt uw browser omgeleid naar https://jwt.ms
, waar de inhoud van het door Azure AD B2C geretourneerde token wordt weergegeven.
Problemen met AD FS-service oplossen
AD FS is geconfigureerd voor het gebruik van het Windows-toepassingslogboek. Als u problemen ondervindt bij het instellen van AD FS als saml-id-provider met behulp van aangepaste beleidsregels in Azure AD B2C, kunt u het AD FS-gebeurtenislogboek controleren:
- Typ Logboeken in de Windows Search-balk en selecteer vervolgens de Logboeken bureaublad-app.
- Als u het logboek van een andere computer wilt weergeven, klikt u met de rechtermuisknop op Logboeken (lokaal). Selecteer Verbinding maken naar een andere computer en vul de velden in om het dialoogvenster Computer selecteren te voltooien.
- Open in Logboeken de logboeken toepassingen en services.
- Selecteer AD FS en selecteer vervolgens Beheer.
- Dubbelklik op de gebeurtenis om meer informatie over een gebeurtenis weer te geven.
SAML-aanvraag is niet ondertekend met de verwachte gebeurtenis van het handtekeningalgoritme
Deze fout geeft aan dat de SAML-aanvraag die is verzonden door Azure AD B2C niet is ondertekend met het verwachte handtekeningalgoritme dat is geconfigureerd in AD FS. De SAML-aanvraag wordt bijvoorbeeld ondertekend met het handtekeningalgoritme rsa-sha256
, maar het verwachte handtekeningalgoritme is rsa-sha1
. Om dit probleem op te lossen, moet u ervoor zorgen dat zowel Azure AD B2C als AD FS zijn geconfigureerd met hetzelfde handtekeningalgoritmen.
Optie 1: Het handtekeningalgoritmen instellen in Azure AD B2C
U kunt configureren hoe u de SAML-aanvraag in Azure AD B2C ondertekent. De metagegevens xmlSignatureAlgorithm bepalen de waarde van de SigAlg
parameter (querytekenreeks of postparameter) in de SAML-aanvraag. In het volgende voorbeeld wordt Azure AD B2C geconfigureerd voor het gebruik van het rsa-sha256
handtekeningalgoritmen.
<Metadata>
<Item Key="WantsEncryptedAssertions">false</Item>
<Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
<Item Key="XmlSignatureAlgorithm">Sha256</Item>
</Metadata>
Optie 2: het handtekeningalgoritmen instellen in AD FS
U kunt ook het verwachte SAML-aanvraaghandtekeningsalgoritme configureren in AD FS.
- Selecteer in serverbeheer Tools en daarna AD FS-beheer.
- Selecteer de Relying Party-vertrouwensrelatie die u eerder hebt gemaakt.
- Selecteer Eigenschappen en selecteer Vervolgens Vooruit
- Configureer het algoritme Secure Hash en selecteer OK om de wijzigingen op te slaan.
De HTTP-omleidingsaanvraag bevat niet de vereiste parameter 'Handtekening' voor een ondertekende aanvraag (AADB2C90168)
Optie 1: Stel responsesSigned in op false in Azure AD B2C
U kunt de vereiste van een ondertekend bericht in Azure AD B2C uitschakelen. In het volgende voorbeeld wordt Azure AD B2C geconfigureerd om de parameter Signature niet te vereisen voor de ondertekende aanvraag.
<Metadata>
<Item Key="WantsEncryptedAssertions">false</Item>
<Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
<Item Key="ResponsesSigned">false</Item>
</Metadata>
Optie 2: Stel de relying party in AD FS in om zowel Bericht als Assertion te ondertekenen
U kunt ook de relying party configureren in AD FS, zoals hieronder wordt vermeld:
- Open PowerShell als Beheer istrator en voer de cmdlet uit
Set-AdfsRelyingPartyTrust -TargetName <RP Name> -SamlResponseSignature MessageAndAssertion
om zowel Message als Assertion te ondertekenen. - Voer
Set-AdfsRelyingPartyTrust -TargetName <RP Name>
de eigenschap SamlResponseSignature uit en controleer of deze is ingesteld als MessageAndAssertion.