Freigeben über


Einrichten der Registrierung und Anmeldung mit generischem OpenID Connect mit Azure Active Directory B2C

Von Bedeutung

Ab dem 1. Mai 2025 steht Azure AD B2C nicht mehr für neue Kunden zur Verfügung. Weitere Informationen finden Sie in unseren HÄUFIG gestellten Fragen.

Bevor Sie beginnen, verwenden Sie die Auswahl eines Richtlinientyps oben auf dieser Seite, um den Typ der Richtlinie auszuwählen, die Sie einrichten. 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.

OpenID Connect ist ein Authentifizierungsprotokoll, das auf OAuth 2.0 basiert, das für die sichere Benutzeranmeldung verwendet werden kann. Die meisten Identitätsanbieter, die dieses Protokoll verwenden, werden in Azure AD B2C unterstützt.

In diesem Artikel wird erläutert, wie Sie Ihren Benutzerflüssen benutzerdefinierte OpenID Connect-Identitätsanbieter hinzufügen können.

Von Bedeutung

Ihre Endpunkte müssen die Azure AD B2C-Sicherheitsanforderungen erfüllen. Ältere TLS-Versionen und Verschlüsselungen sind veraltet. Weitere Informationen finden Sie unter Azure AD B2C TLS- und Verschlüsselungssuiteanforderungen.

Voraussetzungen

Hinzufügen des Identitätsanbieters

  1. Melden Sie sich beim Azure-Portal mit einem Konto an, das mindestens über Administratorrechte des externen Identitätsanbieters verfügt.
  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 "Alle Dienste " in der oberen linken Ecke des Azure-Portals aus, suchen Und wählen Sie Azure AD B2C aus.
  4. Wählen Sie "Identitätsanbieter" und dann " Neuer OpenID Connect-Anbieter" aus.
  5. Geben Sie einen Namen ein. Geben Sie beispielsweise Contoso ein.

Definieren Sie den OpenId Connect-Identitätsanbieter, indem Sie ihn dem ClaimsProviders-Element in der Erweiterungsdatei Ihrer Richtlinie hinzufügen.

  1. Öffnen Sie die Datei TrustFrameworkExtensions.xml.

  2. Suchen Sie das ClaimsProviders-Element . Wenn sie nicht vorhanden ist, fügen Sie es unter dem Stammelement hinzu.

  3. Fügen Sie einen neuen ClaimsProvider wie folgt hinzu:

    <ClaimsProvider>
      <Domain>contoso.com</Domain>
      <DisplayName>Login with Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-OpenIdConnect">
          <DisplayName>Contoso</DisplayName>
          <Description>Login with your Contoso account</Description>
          <Protocol Name="OpenIdConnect"/>
          <Metadata>
            <Item Key="METADATA">https://your-identity-provider.com/.well-known/openid-configuration</Item>
            <Item Key="client_id">00001111-aaaa-2222-bbbb-3333cccc4444</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid profile</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
          </Metadata>
          <!-- <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
          </CryptographicKeys> -->
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid"/>
            <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid"/>
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
            <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="oid"/>
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

Konfigurieren des Identitätsanbieters

Jeder OpenID Connect-Identitätsanbieter beschreibt ein Metadatendokument, das die meisten Informationen enthält, die für die Anmeldung erforderlich sind. Das Metadatendokument enthält Informationen wie die zu verwendenden URLs und den Speicherort der öffentlichen Signaturschlüssel des Diensts. Das OpenID Connect-Metadatendokument befindet sich immer an einem Endpunkt, der auf .well-known/openid-configurationendet. Geben Sie für den OpenID Connect-Identitätsanbieter, den Sie hinzufügen möchten, dessen Metadaten-URL ein.

Geben Sie in der Metadaten-URL die URL des OpenID Connect-Metadatendokuments ein.

Geben Sie in den <Item Key="METADATA"> Metadaten des technischen Profils die URL des OpenID Connect-Metadatendokuments ein.

Client-ID und geheimer Schlüssel

Damit sich Benutzer anmelden können, muss der Identitätsanbieter entwickler eine Anwendung in ihrem Dienst registrieren. Diese Anwendung verfügt über eine ID, die als Client-ID und einen geheimen Clientschlüssel bezeichnet wird.

Der geheime Clientschlüssel ist optional. Sie müssen jedoch einen geheimen Clientschlüssel angeben, wenn der Antworttyp lautet code, der den geheimen Schlüssel verwendet, um den Code für das Token auszutauschen.

Um die Client-ID und den geheimen Clientschlüssel hinzuzufügen, kopieren Sie diese Werte vom Identitätsanbieter, und geben Sie sie in die entsprechenden Felder ein.

Geben Sie in den <Item Key="client_id"> Metadaten des technischen Profils die Client-ID ein.

Erstellen eines Richtlinienschlüssels

Wenn der geheime Clientschlüssel erforderlich ist, speichern Sie den geheimen Clientschlüssel, den Sie zuvor in Ihrem Azure AD B2C-Mandanten aufgezeichnet haben.

  1. Melden Sie sich beim Azure-Portal an.

  2. Stellen Sie sicher, dass Sie das Verzeichnis verwenden, das Ihren Azure AD B2C-Mandanten enthält. Wählen Sie auf der Portalsymbolleiste den Verzeichnis- und Abonnementfilter aus.

  3. Suchen Sie auf der Seite Portaleinstellungen > Verzeichnisse und Abonnements das Azure AD B2C-Verzeichnis in der Liste Verzeichnisname, und klicken Sie dann auf Wechseln.

  4. Wählen Sie "Alle Dienste " in der oberen linken Ecke des Azure-Portals aus, und suchen Sie dann nach Azure AD B2C, und wählen Sie sie aus.

  5. Wählen Sie auf der Seite "Übersicht" die Option "Identity Experience Framework" aus.

  6. Wählen Sie "Richtlinienschlüssel" und dann "Hinzufügen" aus.

  7. Wählen Sie unter "Optionen" die Option Manualaus.

  8. Geben Sie einen Namen für den Richtlinienschlüssel ein. Beispiel: ContosoSecret. Das Präfix B2C_1A_ wird automatisch dem Namen Des Schlüssels hinzugefügt.

  9. Geben Sie im geheimen Schlüssel Ihren geheimen Clientschlüssel ein, den Sie zuvor aufgezeichnet haben.

  10. Wählen Sie für die Schlüsselverwendung die Option Signatureaus.

  11. Klicken Sie auf "Erstellen".

  12. Fügen Sie im CryptographicKeys XML-Element das folgende Element hinzu:

    <CryptographicKeys>
      <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
    </CryptographicKeys>
    

Umfang

Der Bereich definiert die Informationen und Berechtigungen, die Sie bei Ihrem Identitätsanbieter sammeln möchten, z. B. openid profile. Um das ID-Token vom Identitätsanbieter zu empfangen, muss der openid Bereich angegeben werden.

Ohne das ID-Token können sich Benutzer nicht mit dem benutzerdefinierten Identitätsanbieter bei Azure AD B2C anmelden. Andere Bereiche können durch Leerzeichen getrennt angefügt werden. In der Dokumentation des benutzerdefinierten Identitätsanbieters erfahren Sie, welche anderen Bereiche verfügbar sind.

Geben Sie unter Bereich die Bereiche des Identitätsanbieters ein. Beispiel: openid profile.

Geben Sie in den <Item Key="scope"> Metadaten des technischen Profils die Bereiche des Identitätsanbieters ein. Beispiel: openid profile.

Antworttyp

Der Antworttyp beschreibt, welche Art von Informationen beim anfänglichen Aufruf an das authorization_endpoint des benutzerdefinierten Identitätsanbieters zurückgesendet wird. Die folgenden Antworttypen können verwendet werden:

  • code: Gemäß dem Autorisierungscodefluss wird ein Code an Azure AD B2C zurückgegeben. Azure AD B2C fährt fort, den token_endpoint aufzurufen, um den Code gegen das Token auszutauschen.
  • id_token: Ein ID-Token wird vom benutzerdefinierten Identitätsanbieter an Azure AD B2C zurückgegeben.

Wählen Sie im Antworttyp je nach den Einstellungen Ihres Identitätsanbieters die Option code oder id_token aus.

Wählen Sie entsprechend Ihren Identitätsanbietereinstellungen <Item Key="response_types"> oder code in den Metadaten des technischen Profils id_token aus.

Antwortmodus

Der Antwortmodus definiert die Methode, die verwendet werden soll, um die Daten vom benutzerdefinierten Identitätsanbieter an Azure AD B2C zurückzusenden. Die folgenden Antwortmodi können verwendet werden:

  • form_post: Dieser Antwortmodus wird für optimale Sicherheit empfohlen. Die Antwort wird über die HTTP-Methode POST übertragen, wobei der Code oder das Token im Textkörper mithilfe des application/x-www-form-urlencoded Formats codiert wird.
  • query: Der Code oder das Token wird als Abfrageparameter zurückgegeben.

Wählen Sie im Antwortmodus gemäß den Einstellungen Ihres Identitätsanbieters form_post oder query aus.

Wählen Sie in den Metadaten des technischen Profils <Item Key="response_mode">form_post oder query aus, je nach den Einstellungen Ihres Identitätsanbieters.

Domänenhinweis

Der Domänenhinweis kann verwendet werden, um direkt zur Anmeldeseite des angegebenen Identitätsanbieters zu springen, anstatt dass der Benutzer eine Auswahl in der Liste der verfügbaren Identitätsanbieter treffen muss.

Um diese Art von Verhalten zuzulassen, geben Sie einen Wert für den Domänenhinweis ein. Um zum benutzerdefinierten Identitätsanbieter zu springen, fügen Sie den Parameter domain_hint=<domain hint value> an das Ende Ihrer Anforderung an, wenn Sie Azure AD B2C für die Anmeldung aufrufen.

Geben Sie im Domänenhinweis einen Domänennamen ein, der im Domänenhinweis verwendet wird.

Geben Sie im XML-Element des <Domain>contoso.com</Domain> technischen Profils einen Domänennamen ein, der im Domänenhinweis verwendet wird. Beispiel: contoso.com.

Anspruchszuordnung

Nachdem der benutzerdefinierte Identitätsanbieter ein ID-Token zurück an Azure AD B2C sendet, muss Azure AD B2C die Ansprüche vom empfangenen Token den Ansprüchen zuordnen können, die Azure AD B2C erkennt und verwendet. Ziehen Sie für jede der folgenden Zuordnungen die Dokumentation des benutzerdefinierten Identitätsanbieters zu Rate, um die Ansprüche zu verstehen, die in den Token des Identitätsanbieters zurückgegeben werden:

  • Benutzer-ID: Geben Sie den Anspruch ein, der den eindeutigen Bezeichner für den angemeldeten Benutzer bereitstellt.
  • Anzeigename: Geben Sie den Anspruch ein, der den Anzeigenamen oder den vollständigen Namen für den Benutzer bereitstellt.
  • Vorname: Geben Sie den Anspruch ein, der den Vornamen des Benutzers bereitstellt.
  • Nachname: Geben Sie den Anspruch ein, der den Nachnamen des Benutzers bereitstellt.
  • E-Mail: Geben Sie den Anspruch ein, der die E-Mail-Adresse des Benutzers bereitstellt.

Das OutputClaims Element enthält eine Liste von Ansprüchen, die von Ihrem Identitätsanbieter zurückgegeben werden. Ordnen Sie den Namen des Anspruchs, der in Ihrer Richtlinie definiert ist, dem im Identitätsanbieter definierten Namen zu. Konfigurieren Sie unter dem <OutputClaims> Element das PartnerClaimType Attribut mit dem entsprechenden Anspruchsnamen, wie von Ihrem Identitätsanbieter definiert.

AnspruchstypReferenzId Partneranspruchstyp
issuerUserId Geben Sie den Anspruch ein, der den eindeutigen Bezeichner für den angemeldeten Benutzer bereitstellt.
displayName Geben Sie den Anspruch ein, der den Anzeigenamen oder den vollständigen Namen für den Benutzer bereitstellt.
givenName Geben Sie den Anspruch ein, der den Vornamen des Benutzers bereitstellt.
surName Geben Sie den Anspruch ein, der den Nachnamen des Benutzers bereitstellt.
email Geben Sie den Anspruch ein, der die E-Mail-Adresse des Benutzers bereitstellt.
identityProvider Geben Sie den Anspruch ein, der den Namen des Tokenausstellers enthält. Beispiel: iss. Wenn der Identitätsanbieter den Ausstelleranspruch nicht in das Token einschließt, legen Sie das DefaultValue Attribut mit einem eindeutigen Bezeichner Ihres Identitätsanbieters fest. Beispiel: DefaultValue="contoso.com".

Hinzufügen des Identitätsanbieters zu einem Benutzerablauf

  1. Wählen Sie in Ihrem Azure AD B2C-Mandanten Benutzerflüsse aus.
  2. Klicken Sie auf den Benutzerfluss, zu dem Sie einen Identitätsanbieter hinzufügen möchten.
  3. Wählen Sie unter den Identitätsanbietern für soziale Netzwerke den von Ihnen hinzugefügten Identitätsanbieter aus. Beispiel: Contoso.
  4. Wählen Sie Speichern aus.

Testen des Benutzerablaufs

  1. Um Ihre Richtlinie zu testen, wählen Sie "Benutzerablauf ausführen" aus.
  2. Wählen Sie für "Anwendung" die Webanwendung mit dem Namen "testapp1" aus, die Sie zuvor registriert haben. Als Antwort-URL sollte https://jwt.ms angezeigt werden.
  3. Wählen Sie die Schaltfläche " Benutzerfluss ausführen " aus.
  4. Wählen Sie auf der Registrierungs- oder Anmeldeseite den Identitätsanbieter aus, den Sie anmelden möchten. Beispiel: Contoso.

Wenn der Anmeldevorgang erfolgreich ist, wird Ihr Browser zu https://jwt.ms umgeleitet, wo der Inhalt des von Azure AD B2C zurückgegebenen Tokens angezeigt wird.

Hinzufügen einer Benutzerreise

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

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

Fügen Sie den Identitätsanbieter zu einem Benutzerablauf hinzu

Nachdem Sie nun über eine Benutzerreise verfügen, fügen Sie den neuen Identitätsanbieter zur Benutzerreise hinzu. Sie fügen zuerst eine Anmeldeschaltfläche hinzu und verknüpfen 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. Es ist in der Regel der erste Orchestrierungsschritt. Das ClaimsProviderSelections-Element enthält eine Liste von Identitätsanbietern, mit denen sich ein Benutzer anmelden kann. Die Reihenfolge der Elemente steuert die Reihenfolge der Anmeldeschaltflächen, die dem Benutzer angezeigt werden. Fügen Sie ein ClaimsProviderSelection-XML-Element hinzu. Setzen Sie den Wert von TargetClaimsExchangeId auf einen freundlichen Namen.

  2. Fügen Sie im nächsten Orchestrierungsschritt ein ClaimsExchange-Element hinzu. Legen Sie die ID auf den Wert der Zielansprücheaustausch-ID fest. Aktualisieren Sie den Wert von TechnicalProfileReferenceId auf die ID des zuvor erstellten technischen Profils.

Der folgende XML-Code veranschaulicht die ersten beiden Orchestrierungsschritte einer Benutzerreise 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-OpenIdConnect" />
  </ClaimsExchanges>
</OrchestrationStep>

Konfigurieren einer Richtlinie für die vertrauende Seite

Die Richtlinie der vertrauenden Seite, z. B. SignUpSignIn.xml, gibt die Benutzerreise an, die Azure AD B2C ausführt. Suchen Sie das DefaultUserJourney-Element in Vertrauende Seite. Aktualisieren Sie die ReferenceId so, dass sie mit der Benutzerreise-ID übereinstimmt, in der Sie den Identitätsanbieter hinzugefügt haben.

Im folgenden Beispiel wird die CustomSignUpSignIn für die User Journey 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 Portalsymbolleiste das Symbol "Verzeichnis + Abonnement " und 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, zum Beispiel TrustFrameworkExtensions.xml, und dann die Richtlinie der vertrauenden Seite, zum Beispiel SignUpSignIn.xml.
  1. Wählen Sie die Richtliniendatei für die vertrauende Seite aus, z. B. B2C_1A_signup_signin.
  2. Wählen Sie für "Anwendung" eine Webanwendung aus, die Sie zuvor registriert haben. Als Antwort-URL sollte https://jwt.ms angezeigt werden.
  3. Wählen Sie die Schaltfläche " Jetzt ausführen " aus.
  4. Wählen Sie auf der Anmelde- oder Anmeldeseite Contoso aus, um sich mit dem Google-Konto anzumelden.

Wenn der Anmeldevorgang erfolgreich ist, wird Ihr Browser zu https://jwt.ms umgeleitet, wo der Inhalt des von Azure AD B2C zurückgegebenen Tokens angezeigt wird.

Bekannte Probleme

  • Azure AD B2C unterstützt JWE (JSON Web Encryption) nicht für den Austausch verschlüsselter Token mit OpenID Connect-Identitätsanbietern.

Nächste Schritte

Weitere Informationen finden Sie im Referenzhandbuch zum technischen Profil von OpenId Connect .