Einrichten von Registrierung und Anmeldung mit SAML-Identitätsanbieter und Azure Active Directory B2C

Azure Active Directory B2C (Azure AD B2C) unterstützt den Verbund mit SAML 2.0-Identitätsanbietern. In diesem Artikel erfahren Sie, wie Sie die Anmeldung mit einem SAML-Identitätsanbieterkonto ermöglichen, damit Benutzer sich mit ihren vorhandenen Social Media- oder Unternehmensidentitäten wie ADFS und Salesforce anmelden können.

Vorbereitung: Wählen Sie mithilfe des SelektorChoose a policy type (Richtlinientyp auswählen) den Typ der einzurichtenden Richtlinie aus. Azure Active Directory B2C bietet zwei Methoden zum Definieren der Benutzerinteraktion mit Ihren Anwendungen: vordefinierte Benutzerflows oder vollständig konfigurierbare benutzerdefinierte Richtlinien. Die Schritte, die in diesem Artikel erforderlich sind, unterscheiden sich für jede Methode.

Dieses Feature ist nur für benutzerdefinierte Richtlinien verfügbar. Wählen Sie für die Einrichtungsschritte in der vorherigen Auswahl die Option Benutzerdefinierte Richtlinie aus.

Übersicht über das Szenario

Sie können Azure AD B2C so konfigurieren, dass Benutzer sich mit Anmeldeinformationen von externen SAML-Identitätsanbietern für soziale Netzwerke oder Unternehmen bei Ihrer Anwendung anmelden können. Wenn Azure AD B2C mit einem SAML-Identitätsanbieter einen Verbund bildet, fungiert dieser als Dienstanbieter, der eine SAML-Anforderung an den SAML-Identitätsanbieter sendet und auf eine SAML-Antwort wartet. Das Diagramm weiter unten zeigt Folgendes:

  1. Die Anwendung initiiert eine Autorisierungsanforderung an Azure AD B2C. Die Anwendung kann eine OAuth 2.0-oder OpenID Connect-Anwendung oder ein SAML-Dienstanbieter sein.
  2. Auf der Azure AD B2C-Anmeldeseite wählt der Benutzer die Anmeldung mit einem SAML-Identitätsanbieterkonto (z. B. Contoso) aus. Azure AD B2C initiiert eine SAML-Autorisierungsanforderung und leitet den Benutzer an den SAML-Identitätsanbieter weiter, um die Anmeldung abzuschließen.
  3. Der SAML-Identitätsanbieter gibt eine SAML-Antwort zurück.
  4. Azure AD B2C überprüft das SAML-Token, extrahiert die Ansprüche, gibt ein eigenes Token aus und führt den Benutzer zurück zur Anwendung.

Sign in with SAML identity provider flow

Voraussetzungen

Komponenten der Lösung

Für dieses Szenario sind die folgenden Komponenten erforderlich:

  • Ein SAML-Identitätsanbieter mit der Möglichkeit, SAML-Anforderungen von Azure AD B2C zu empfangen, zu decodieren und darauf zu antworten.
  • Öffentlich verfügbarer SAML-Metadatenendpunkt für Ihren Identitätsanbieter.
  • Ein Azure AD B2C-Mandant.

Wichtig

Ihre Endpunkte müssen die Azure AD B2C-Sicherheitsanforderungen erfüllen. Ältere TLS-Versionen und Verschlüsselungsverfahren sind veraltet. Weitere Informationen finden Sie unter Azure Active Directory B2C TLS- und Cipher Suite-Anforderungen.

Erstellen eines Richtlinienschlüssels

Sie müssen ein gültiges X509-Zertifikat mit dem privaten Schlüssel bereitstellen, um eine Vertrauensstellung zwischen Azure AD B2C und Ihrem SAML-Identitätsanbieter einzurichten. Azure AD B2C signiert die SAML-Anforderungen und verwendet dafür den privaten Schlüssel des Zertifikats. Der Identitätsanbieter überprüft die Anforderung mithilfe des öffentlichen Schlüssels des Zertifikats. Auf den öffentlichen Schlüssel kann über die Metadaten im technischen Profil zugegriffen werden. Stattdessen können Sie aber auch manuell die CER-Datei in Ihren SAML-Identitätsanbieter hochladen.

In den meisten Szenarios genügt ein selbstsigniertes Zertifikat. In Produktionsumgebungen wird die Verwendung eines X509-Zertifikats empfohlen, das von einer Zertifizierungsstelle ausgestellt wird. Wie später in diesem Dokument beschrieben können Sie die SAML-Signierung für Umgebungen, bei denen es sich nicht um Produktionsumgebungen handelt, auf beiden Seiten deaktivieren.

Beschaffung eines Zertifikats

Wenn Sie noch nicht über ein Zertifikat verfügen, können Sie ein selbstsigniertes Zertifikat verwenden. Ein selbstsigniertes Zertifikat ist ein Sicherheitszertifikat, das nicht von einer Zertifizierungsstelle (ZS) signiert ist und nicht die Sicherheitsgarantien eines Zertifikats bietet, das von einer Zertifizierungsstelle signiert wurde.

Verwenden Sie unter Windows das PowerShell-Cmdlet New-SelfSignedCertificate, um ein Zertifikat zu generieren.

  1. Führen Sie den folgenden PowerShell-Befehl aus, um ein selbstsigniertes Zertifikat zu generieren. Ändern Sie das Argument -Subject entsprechend Ihrer Anwendung und dem Azure AD B2C-Mandantennamen, z. B. contosowebapp.contoso.onmicrosoft.com. Sie können auch das -NotAfter-Datum anpassen, um einen anderen Ablaufzeitpunkt für das Zertifikat anzugeben.

    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. Suchen Sie auf dem Windows-Computer nach Benutzerzertifikate verwalten und wählen Sie

  3. Wählen Sie unter Zertifikate - Aktueller Benutzer die Option Persönlich>Zertifikate>IhrAnwendungsname.ihrmieter.onmicrosoft.com.

  4. Wählen Sie das Zertifikat und dann Aktion>Alle Aufgaben>Exportieren aus.

  5. Wählen Sie Weiter>Ja, den privaten Schlüssel exportieren>Weiter.

  6. Übernehmen Sie die Standardeinstellungen für Exportdateiformat, und wählen Sie dann Weiter.

  7. Aktivieren Sie die Option Passwort, geben Sie ein Passwort für das Zertifikat ein, und wählen Sie dann Weiter.

  8. Um einen Speicherort für Ihr Zertifikat anzugeben, wählen Sie Durchsuchen und navigieren Sie zu einem Verzeichnis Ihrer Wahl.

  9. Geben Sie im Fenster Speichern unter einen Dateinamen ein, und wählen Sie dann Speichern.

  10. Wählen Sie Weiter>Fertig stellen aus.

Damit das Kennwort für die PFX-Datei in Azure AD B2C akzeptiert wird, muss es statt mit „AES256-SHA256“ mit der Option „TripleDES-SHA1“ im Exporthilfsprogramm des Windows-Zertifikatspeichers verschlüsselt werden.

Hochladen des Zertifikats

Sie müssen Ihr Zertifikat in Ihrem Azure AD B2C-Mandanten speichern.

  1. Melden Sie sich beim Azure-Portal an.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
  3. Wählen Sie links oben im Azure-Portal die Option Alle Dienste aus, suchen Sie nach Azure AD B2C, und wählen Sie dann diese Option aus.
  4. Wählen Sie auf der Seite „Übersicht“ die Option Framework für die Identitätsfunktion aus.
  5. Klicken Sie erst auf Richtlinienschlüssel und anschließend auf Hinzufügen.
  6. Klicken Sie unter Optionen auf Upload.
  7. Geben Sie einen Namen für den Richtlinienschlüssel ein. Beispiel: SAMLSigningCert. Dem Namen Ihres Schlüssels wird automatisch das Präfix B2C_1A_ hinzugefügt.
  8. Navigieren Sie zur PFX-Datei Ihres Zertifikats mit dem privaten Schlüssel, und wählen Sie sie aus.
  9. Klicken Sie auf Erstellen.

Konfigurieren des technischen SAML-Profils

Definieren Sie den SAML-Identitätsanbieter, indem Sie ihn dem Element ClaimsProviders in der Erweiterungsdatei Ihrer Richtlinie hinzufügen. Die Anspruchsanbieter enthalten ein technisches SAML-Profil, das die für die Kommunikation mit dem SAML-Identitätsanbieter erforderlichen Endpunkte und Protokolle vorgibt. So fügen Sie einen Anspruchsanbieter mit einem technischen SAML-Profil hinzu:

  1. Öffnen Sie die Datei TrustFrameworkExtensions.xml.

  2. Suchen Sie nach dem Element ClaimsProviders. Falls das Element nicht vorhanden sein sollte, fügen Sie es unter dem Stammelement hinzu.

  3. Fügen Sie ein neues ClaimsProvider-Element wie folgt hinzu:

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

Aktualisieren Sie die folgenden XML-Elemente mit dem entsprechenden Wert:

XML-Element Wert
ClaimsProvider\Domain Der Name der Domäne, die für die direkte Anmeldung verwendet wird. Geben Sie den Namen der Domäne ein, die Sie für die direkte Anmeldung verwenden möchten. Beispiel: Contoso.com.
TechnicalProfile\DisplayName Dieser Wert wird auf dem Anmeldebildschirm auf der Anmeldeschaltfläche angezeigt. Beispiel: Contoso.
Metadata\PartnerEntity URL zu den Metadaten des SAML-Identitätsanbieters. Alternativ können Sie die Metadaten des Identitätsanbieters kopieren und in das CDATA-Element <![CDATA[Your IDP metadata]]> einfügen.

Zuordnen der Ansprüche

Das Element OutputClaims enthält eine Liste von Ansprüchen, die vom SAML-Identitätsanbieter zurückgegeben werden. Ordnen Sie den Namen des in Ihrer Richtlinie definierten Anspruchs dem Namen der Assertion zu, die für den Identitätsanbieter definiert wurde. Überprüfen Sie Ihren Identitätsanbieter bezüglich der Liste der Ansprüche (Assertions). Weitere Informationen finden Sie unter Anspruchszuordnung.

Im obigen Beispiel enthält Contoso-SAML2 die Ansprüche, die von einem SAML-Identitätsanbieter zurückgegeben werden:

  • Der Anspruch assertionSubjectName wird dem Anspruch issuerUserId zugeordnet.
  • Der Anspruch first_name wird dem Anspruch givenName zugeordnet.
  • Der Anspruch last_name wird dem Anspruch surname zugeordnet.
  • Der Anspruch http://schemas.microsoft.com/identity/claims/displayname wird dem Anspruch displayName zugeordnet.
  • Dem Anspruch email wird kein Name zugeordnet.

Das technische Profil gibt auch Ansprüche zurück, die vom Identitätsanbieter nicht zurückgegeben werden:

  • Der Anspruch identityProvider enthält den Namen des Identitätsanbieters.
  • Der Anspruch authenticationSource enthält als Standardwert socialIdpAuthentication.

Hinzufügen des technischen SAML-Sitzungsprofils

Wenn Sie noch kein technisches SAML-Sitzungsprofil SM-Saml-idp haben, fügen Sie Ihrer Erweiterungsrichtlinie ein Profil hinzu. Suchen Sie den Abschnitt <ClaimsProviders>, und fügen Sie den folgenden XML-Codeausschnitt hinzu. Wenn Ihre Richtlinie das technische SM-Saml-idp-Profil bereits enthält, fahren Sie mit dem nächsten Schritt fort. Weitere Informationen finden Sie unter Sitzungsverwaltung für einmaliges Anmelden.

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

Hinzufügen einer User Journey

Der Identitätsanbieter wurde nun eingerichtet, aber er ist noch auf keiner der Anmeldeseiten verfügbar. Wenn Sie nicht über eine eigene benutzerdefinierte User Journey verfügen, erstellen Sie ein Duplikat einer vorhandenen User Journey-Vorlage, und fahren Sie andernfalls mit dem nächsten Schritt fort.

  1. Öffnen Sie die Datei TrustFrameworkBase.xml aus dem Starter Pack.
  2. Suchen und kopieren Sie den gesamten Inhalt des UserJourney-Elements, das Id="SignUpOrSignIn" enthält.
  3. Öffnen Sie die Datei TrustFrameworkExtensions.xml, und suchen Sie nach dem UserJourneys-Element. Wenn das Element nicht vorhanden ist, fügen Sie ein solches hinzu.
  4. Fügen Sie den gesamten Inhalt des kopierten UserJourney-Element als untergeordnetes Element des UserJourneys-Elements ein.
  5. Benennen Sie die ID der User Journey um. Beispiel: Id="CustomSignUpSignIn".

Hinzufügen des Identitätsanbieters zu einer User Journey

Nachdem Sie nun über eine User Journey verfügen, fügen Sie den neuen Identitätsanbieter der User Journey hinzu. Fügen Sie zunächst eine Anmeldeschaltfläche hinzu, und verknüpfen Sie dann die Schaltfläche mit einer Aktion. Die Aktion ist das technische Profil, das Sie zuvor erstellt haben.

  1. Suchen Sie nach dem Orchestrierungsschrittelement, das Type="CombinedSignInAndSignUp" enthält, oder Type="ClaimsProviderSelection" in der User Journey. Dies ist in der Regel der erste Orchestrierungsschritt. Das ClaimsProviderSelections-Element enthält eine Liste mit Identitätsanbietern, mit denen sich ein Benutzer anmelden kann. Die Reihenfolge der Elemente gibt die Reihenfolge der Anmeldeschaltflächen vor, die dem Benutzer angezeigt werden. Fügen Sie ein ClaimsProviderSelection-XML-Element hinzu. Legen Sie für TargetClaimsExchangeId einen Anzeigenamen fest.

  2. Fügen Sie im nächsten Orchestrierungsschritt ein ClaimsExchange-Element hinzu. Legen Sie die ID auf den Wert der Zielanspruchs-Austausch-ID fest. Ändern Sie den Wert von TechnicalProfileReferenceId in die ID des technischen Profils, das Sie zuvor erstellt haben.

Der folgende XML-Code veranschaulicht die ersten beiden Orchestrierungsschritte einer User Journey mit dem Identitätsanbieter:

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

Konfigurieren einer Richtlinie für die vertrauende Seite

Die Richtlinie für die vertrauende Seite (z. B. SignUpSignIn.xml) gibt die User Journey an, die Azure AD B2C ausführt. Suchen Sie das DefaultUserJourney-Element in Vertrauende Seite. Aktualisieren Sie ReferenceId auf die ID der User Journey, in der Sie den Identitätsanbieter hinzugefügt haben.

Im folgenden Beispiel wird die ReferenceId für die User Journey CustomSignUpSignIn auf CustomSignUpSignIn festgelegt:

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

Hochladen der benutzerdefinierten Richtlinie

  1. Melden Sie sich beim Azure-Portal an.
  2. Wählen Sie auf der Symbolleiste des Portals das Symbol Verzeichnis und Abonnement aus, und wählen Sie dann das Verzeichnis aus, das Ihren Azure AD B2C-Mandanten enthält.
  3. Suchen Sie im Azure-Portal nach Azure AD B2C, und wählen Sie diese Option dann aus.
  4. Wählen Sie unter Richtlinien die Option Identity Experience Framework aus.
  5. Wählen Sie Benutzerdefinierte Richtlinie hochladen aus, und laden Sie dann die beiden geänderten Richtliniendateien in der folgenden Reihenfolge hoch: zuerst die Erweiterungsrichtlinie (z. B. TrustFrameworkExtensions.xml) und dann die Richtlinie für die vertrauende Seite (z. B. SignUpSignIn.xml).

Konfigurieren des SAML-Identitätsanbieters

Nachdem Sie Ihre Richtlinie konfiguriert haben, müssen Sie Ihren SAML-Identitätsanbieter mit den SAML-Metadaten von Azure AD B2C konfigurieren. Die SAML-Metadaten sind Informationen, die im SAML-Protokoll verwendet werden, um die Konfiguration Ihrer Richtlinie, den Dienstanbieter, verfügbar zu machen. Sie definieren den Ort der Dienste, z. B. Anmelden und Abmelden, Zertifikate, Anmeldemethode usw.

Für jeden SAML-Identitätsanbieter sind unterschiedliche Schritte zum Einrichten eines Dienstanbieters erforderlich. Einige SAML-Identitätsanbieter fragen nach Azure AD B2C-Metadaten, bei anderen müssen Sie die Metadatendatei manuell durchsuchen und die Informationen bereitstellen. Anleitungen hierzu finden Sie in der Dokumentation Ihres Identitätsanbieters.

Das folgende Beispiel zeigt eine URL der SAML-Metadaten in einem technischen Azure AD B2C-Profil:

https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<your-policy>/samlp/metadata?idptp=<your-technical-profile>

Verwenden Sie bei einer benutzerdefinierten Domäne das folgende Format:

https://your-domain-name/<your-tenant-name>.onmicrosoft.com/<your-policy>/samlp/metadata?idptp=<your-technical-profile>

Ersetzen Sie die folgenden Werte:

  • your-tenant-name durch den Namen Ihres Mandanten, z. B. Ihr-Mandant.onmicrosoft.com.
  • your-domain-name durch den Namen Ihrer benutzerdefinierten Domäne, z. B. login.contoso.com.
  • your-policy durch den Namen Ihrer Richtlinie. Beispiel: B2C_1A_signup_signin_adfs.
  • your-technical-profile durch den Namen des technische Profil des SAML-Identitätsanbieters. Beispiel: Contoso-SAML2

Öffnen Sie einen Browser, und browsen Sie zu dieser URL. Stellen Sie sicher, dass Sie die richtige URL eingeben und dass Sie Zugriff auf die XML-Metadatendatei haben.

Testen der benutzerdefinierten Richtlinie

  1. Melden Sie sich beim Azure-Portal an.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
  3. Suchen Sie im Azure-Portal nach Azure AD B2C, und wählen Sie diese Option dann aus.
  4. Wählen Sie unter Richtlinien die Option Identity Experience Framework aus.
  5. Wählen Sie die Richtliniendatei für die vertrauende Seite aus, z. B. B2C_1A_signup_signin.
  6. Wählen Sie für Anwendung eine Webanwendung aus, die Sie zuvor registriert haben. Als Antwort-URL sollte https://jwt.ms angezeigt werden.
  7. Wählen Sie die Schaltfläche Jetzt ausführen aus.
  8. Wählen Sie auf der Registrierungs- oder Anmeldeseite die Option Contoso aus, um sich mit dem Contoso-Konto anzumelden.

Wenn der Anmeldevorgang erfolgreich verlaufen ist, wird der Browser an https://jwt.ms umgeleitet und dadurch der Inhalt des von Azure AD B2C zurückgegebenen Tokens angezeigt.

Nächste Schritte