Registratie en aanmelding met een SAML-id-provider instellen met behulp van Azure Active Directory B2C

Azure Active Directory B2C (Azure AD B2C) ondersteunt federatie met SAML 2.0-id-providers. In dit artikel wordt beschreven hoe u aanmelding met een gebruikersaccount van een SAML-id-provider mogelijk maakt, zodat gebruikers zich kunnen aanmelden met hun bestaande id voor sociale netwerken of ondernemingen, zoals ADFS en Salesforce.

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.

Overzicht van scenario

U kunt Azure AD B2C zo configureren dat gebruikers zich kunnen aanmelden bij uw toepassing met referenties van externe SAML-id-providers (IdP) voor sociale netwerken of voor ondernemingen. Wanneer Azure AD B2C in een federatief verband met een SAML-id-provider wordt gebruikt, fungeert deze als een serviceprovider die een SAML-aanvraag start bij de SAML-id-provider en wacht op een SAML-antwoord. In het volgende diagram ziet u het volgende:

  1. De toepassing start een autorisatieaanvraag bij Azure AD B2C. De toepassing kan een OAuth 2.0- of OpenId Connect-toepassing of een SAML-serviceprovider zijn.
  2. Op de Azure AD B2C-aanmeldingspagina kiest de gebruiker ervoor om zich aan te melden met een SAML-id-provideraccount (bijvoorbeeld Contoso). Azure AD B2C start een SAML-autorisatieaanvraag en leidt de gebruiker naar de SAML-id-provider om de aanmelding te voltooien.
  3. De SAML-id-provider retourneert een SAML-antwoord.
  4. Azure AD B2C valideert het SAML-token, haalt claims op, geeft een eigen token uit en leidt de gebruiker terug naar de toepassing.

Sign in with SAML identity provider flow

Vereisten

Onderdelen van de oplossing

De volgende elementen zijn vereist voor dit scenario:

  • Een SAML-id-provider met de mogelijkheid om SAML-aanvragen van Azure AD B2C te ontvangen, decoderen en hierop te antwoorden.
  • Een openbaar beschikbaar SAML-metagegevenseindpunt voor uw id-provider.
  • Een Azure AD B2C-tenant.

Belangrijk

Uw eindpunten moeten voldoen aan de Azure AD B2C-beveiligingsvereisten. Oudere TLS-versies en -coderingen zijn afgeschaft. Zie Vereisten voor Azure AD B2C TLS en suites met coderingsmethoden voor meer informatie.

Een beleidssleutel maken

Als u een vertrouwensrelatie tot stand wilt brengen tussen Azure AD B2C en uw SAML-id-provider, moet u een geldig X509-certificaat met de persoonlijke sleutel opgeven. De SAML-aanvragen worden door Azure AD B2C ondertekend met behulp van de persoonlijke sleutel van het certificaat. De id-provider valideert de aanvraag met behulp van de openbare sleutel van het certificaat. De openbare sleutel is toegankelijk via metagegevens van het technische profiel. U kunt ook het CER-bestand handmatig uploaden naar uw SAML-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.

Een certificaat verkrijgen

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.

  1. 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, zoals contosowebapp.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"
    
  2. Ga op een Windows-computer naar Gebruikerscertificaten beheren en selecteer dit

  3. Selecteer onder Certificaten - huidige gebruiker de optie Persoonlijk>Certificaten>yourappname.yourtenant.onmicrosoft.com.

  4. Selecteer het certificaat en vervolgens Actie>Alle taken>Exporteren.

  5. Selecteer Volgende>Ja, exporteer de persoonlijke sleutel>Volgende.

  6. Accepteer de standaardwaarden voor Exportbestandsindeling en selecteer vervolgens Volgende.

  7. Schakel de optie Wachtwoord in, voer een wachtwoord in voor het certificaat en selecteer vervolgens Volgende.

  8. Als u een locatie wilt opgeven om uw certificaat in op te slaan, selecteert u Bladeren en navigeert u naar de gewenste map.

  9. Voer in het venster Opslaan als een bestandsnaam in en selecteer vervolgens Opslaan.

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

Het certificaat uploaden

U moet uw certificaat opslaan in uw Azure AD B2C-tenant.

  1. Meld u aan bij de Azure-portal.
  2. 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.
  3. Kies Alle services linksboven in de Azure Portal, zoek Azure AD B2C en selecteer deze.
  4. Selecteer Identity Experience Framework op de overzichtspagina.
  5. Selecteer Beleidssleutels en vervolgens Toevoegen.
  6. Voor Opties kiest u Upload.
  7. Voer een naam in voor de beleidssleutel. Bijvoorbeeld SAMLSigningCert. Het voorvoegsel B2C_1A_ wordt automatisch toegevoegd aan de naam van uw sleutel.
  8. Blader naar het PFX-certificaatbestand en selecteer het bestand met de persoonlijke sleutel.
  9. Klik op Create.

Het technische profiel voor SAML configureren

Definieer de SAML-id-provider door deze toe te voegen aan het element ClaimsProviders in het uitbreidingsbestand van uw beleid. De claimproviders bevatten een technisch profiel voor SAML waarmee de eindpunten en de protocollen worden bepaald die nodig zijn om te communiceren met de SAML-id-provider. Een claimprovider toevoegen met een technisch profiel voor SAML:

  1. Open het bestand TrustFrameworkExtensions.xml.

  2. Ga naar het element ClaimsProviders. Als dit niet voorkomt, voegt u het toe onder het hoofdelement.

  3. 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 SAML identity provider account</Description>
          <Protocol Name="SAML2"/>
          <Metadata>
            <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="assertionSubjectName" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="first_name" />
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="last_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="http://schemas.microsoft.com/identity/claims/displayname" />
            <OutputClaim ClaimTypeReferenceId="email"  />
            <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>
    

Werk de volgende XML-elementen bij met de relevante waarde:

XML-element Waarde
ClaimsProvider\Domain De domeinnaam die wordt gebruikt voor directe aanmelding. Voer de domeinnaam in die u wilt gebruiken bij de directe aanmelding. Bijvoorbeeld Contoso.com.
TechnicalProfile\DisplayName Deze waarde wordt weergegeven op de aanmeldingsknop op het aanmeldingsscherm. Bijvoorbeeld Contoso.
Metadata\PartnerEntity URL van de metagegevens van de SAML-id-provider. U kunt ook de metagegevens van de id-provider kopiëren en deze toevoegen in het CDATA-element <![CDATA[Your IDP metadata]]>.

De claims toewijzen

Het element OutputClaims bevat een lijst met claims die worden geretourneerd door de SAML-id-provider. Wijs de naam van de claim die in uw beleid is gedefinieerd toe aan de assertienaam die is gedefinieerd in de id-provider. Controleer uw id-provider op de lijst met claims (asserties). Zie claimtoewijzing voor meer informatie.

In het bovenstaande voorbeeld bevat Contoso-SAML2 de claims die zijn geretourneerd door een SAML-id-provider:

  • De claim assertionSubjectName wordt toegewezen aan de claim issuerUserId .
  • De claim first_name wordt toegewezen aan de givenName.
  • De claim last_name wordt toegewezen aan de claim surname.
  • De http://schemas.microsoft.com/identity/claims/displayname claim is toegewezen aan de displayName-claim .
  • 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.

Het technische profiel van de SAML-sessie toevoegen

Als u nog niet over het technisch profiel voor de SAML-sessie SM-Saml-idp beschikt, voegt u er een toe aan uw uitbreidingsbeleid. Ga naar de <ClaimsProviders>-sectie en voeg het volgende XML-fragment toe. Als uw beleid al het technische profiel voor SM-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>

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.

  1. Open het bestand TrustFrameworkBase.xml vanuit het starterspakket.
  2. Zoek en kopieer de volledige inhoud van het element UserJourney dat Id="SignUpOrSignIn" bevat.
  3. Open het bestand TrustFrameworkExtensions.xml en ga naar het element UserJourneys. Als het element niet voorkomt, voegt u het toe.
  4. Plak de volledige inhoud van het element UserJourney dat u hebt gekopieerd als een onderliggend element van het element UserJourneys.
  5. 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.

  1. Ga in het gebruikerstraject naar het element van de indelingsstap dat Type="CombinedSignInAndSignUp" of Type="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.

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

  1. Meld u aan bij de Azure-portal.
  2. Selecteer het pictogram Map + Abonnement in de werkbalk van de portal en selecteer vervolgens de map die uw Azure AD B2C-tenant bevat.
  3. Zoek en selecteer Azure AD B2C in de Azure-portal.
  4. Selecteer onder Beleid de optie Identity Experience Framework.
  5. 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, zoals SignUpSignIn.xml.

Uw SAML-id-provider configureren

Nadat uw beleid is geconfigureerd, moet u de SAML-id-provider configureren met de SAML-metagegevens voor Azure AD B2C. De SAML-metagegevens zijn gegevens die worden gebruikt in het SAML-protocol om de configuratie van uw beleid, de serviceprovider, beschikbaar te maken. Hiermee worden de locatie van de services, zoals aanmelden en afmelden, certificaten en aanmeldingsmethode gedefinieerd.

Bij elke SAML-id-provider moeten verschillende stappen worden uitgevoerd voor het instellen van een serviceprovider. Sommige SAML-id-providers vragen om de Azure AD B2C-metagegevens, terwijl u bij andere het metagegevensbestand handmatig moet doorlopen en de gegevens moet opgeven. Raadpleeg de documentatie van uw id-provider voor ondersteuning.

In het volgende voorbeeld ziet u een URL-adres voor de 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.

Uw aangepaste beleid testen

  1. Meld u aan bij de Azure-portal.
  2. 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.
  3. Zoek en selecteer Azure AD B2C in de Azure-portal.
  4. Selecteer onder Beleid de optie Identity Experience Framework
  5. Selecteer uw Relying Party-beleid, bijvoorbeeld B2C_1A_signup_signin.
  6. Selecteer voor Toepassing een webtoepassing die u eerder hebt geregistreerd. De antwoord-URL moet https://jwt.ms weergeven.
  7. Selecteer de knop Nu uitvoeren.
  8. Selecteer Contoso op de registratie- of aanmeldingspagina om u aan te melden met het Contoso-account.

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.

Volgende stappen