Freigeben über


Einrichten der Registrierung und Anmeldung mit einem GitHub-Konto 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.

Hinweis

Dieses Feature befindet sich in der öffentlichen Vorschau.

Von Bedeutung

Ab Mai 2021 kündigte GitHub eine Änderung an, die sich auf Ihren benutzerdefinierten Azure AD B2C-Richtlinienverbund auswirkt. Aufgrund der Änderung fügen Sie <Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item> Metadaten zu Ihrem technischen GitHub-Profil hinzu. Weitere Informationen finden Sie unter API-Authentifizierung über Abfrageparameter als veraltet eingestuft.

Voraussetzungen

Erstellen einer GitHub-OAuth-Anwendung

Um die Anmeldung mit einem GitHub-Konto in Azure Active Directory B2C (Azure AD B2C) zu aktivieren, müssen Sie eine Anwendung im GitHub-Entwicklerportal erstellen. Weitere Informationen finden Sie unter Erstellen einer OAuth-App. Wenn Sie noch kein GitHub-Konto haben, können Sie sich auf GitHub bei https://www.github.com/ anmelden.

  1. Melden Sie sich mit Ihren GitHub-Anmeldeinformationen beim GitHub-Entwickler an.
  2. Wählen Sie OAuth-Apps und dann "Neue OAuth-App" aus.
  3. Geben Sie einen Anwendungsnamen und Ihre Homepage-URL ein.
  4. Geben Sie für die https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp ein. Wenn Sie eine benutzerdefinierte Domäne verwenden, geben Sie die Zeichenfolge https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authrespein. Ersetzen Sie your-domain-name durch Ihre benutzerdefinierte Domäne, und your-tenant-name mit dem Namen Ihres Mandanten. Verwenden Sie beim Eingeben Ihres Mandantennamens alle Kleinbuchstaben, auch wenn der Mandant in Azure AD B2C mit Großbuchstaben definiert ist.
  5. Klicke auf Anwendung registrieren.
  6. Kopieren Sie die Werte der Client-ID und des geheimen Clientschlüssels. Sie benötigen beide Angaben, um den Identitätsanbieter Ihrem Mandanten hinzuzufügen.

Konfigurieren von GitHub als Identitätsanbieter

  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 GitHub (Vorschau) aus.
  5. Geben Sie einen Namen ein. Beispiel: GitHub.
  6. Geben Sie für die Client-ID die Client-ID der Zuvor erstellten GitHub-Anwendung ein.
  7. Geben Sie für Geheimer Clientschlüssel den zuvor notierten geheimen Clientschlüssel ein.
  8. Wählen Sie Speichern aus.

Hinzufügen eines GitHub-Identitätsanbieters zu einem Benutzerablauf

Zu diesem Zeitpunkt wurde der GitHub-Identitätsanbieter eingerichtet, ist aber noch nicht auf einer der Anmeldeseiten verfügbar. So fügen Sie den GitHub-Identitätsanbieter einem Benutzerablauf hinzu:

  1. Wählen Sie in Ihrem Azure AD B2C-Mandanten Benutzerflüsse aus.
  2. Klicken Sie auf den Benutzerfluss, dem Sie den GitHub-Identitätsanbieter hinzufügen möchten.
  3. Wählen Sie unter den Identitätsanbietern für soziale NetzwerkeGitHub aus.
  4. Wählen Sie Speichern aus.
  5. Um Ihre Richtlinie zu testen, wählen Sie "Benutzerablauf ausführen" aus.
  6. 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.
  7. Wählen Sie die Schaltfläche " Benutzerfluss ausführen " aus.
  8. Wählen Sie auf der Anmelde- oder Anmeldeseite GitHub aus, um sich mit dem GitHub-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.

Richtlinienschlüssel erstellen

Sie müssen den geheimen Clientschlüssel speichern, den Sie zuvor in Ihrem Azure AD B2C-Mandanten aufgezeichnet haben.

  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 "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.
  4. Wählen Sie auf der Seite "Übersicht" die Option "Identity Experience Framework" aus.
  5. Wählen Sie "Richtlinienschlüssel" und dann "Hinzufügen" aus.
  6. Wählen Sie unter "Optionen" die Option Manualaus.
  7. Geben Sie einen Namen für den Richtlinienschlüssel ein. Beispiel: GitHubSecret. Das Präfix B2C_1A_ wird automatisch dem Namen Des Schlüssels hinzugefügt.
  8. Geben Sie im geheimen Schlüssel Ihren geheimen Clientschlüssel ein, den Sie zuvor aufgezeichnet haben.
  9. Wählen Sie für die Schlüsselverwendung die Option Signatureaus.
  10. Klicken Sie auf "Erstellen".

Konfigurieren von GitHub als Identitätsanbieter

Damit sich Benutzer mit einem GitHub-Konto anmelden können, müssen Sie das Konto als Anspruchsanbieter definieren, mit dem Azure AD B2C über einen Endpunkt kommunizieren kann. Der Endpunkt stellt eine Reihe von Ansprüchen bereit, die von Azure AD B2C verwendet werden, um zu überprüfen, ob ein bestimmter Benutzer authentifiziert wurde.

Sie können ein GitHub-Konto als Anspruchsanbieter definieren, indem Sie es 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>github.com</Domain>
      <DisplayName>GitHub</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="GitHub-OAuth2">
          <DisplayName>GitHub</DisplayName>
          <Protocol Name="OAuth2" />
          <Metadata>
            <Item Key="ProviderName">github.com</Item>
            <Item Key="authorization_endpoint">https://github.com/login/oauth/authorize</Item>
            <Item Key="AccessTokenEndpoint">https://github.com/login/oauth/access_token</Item>
            <Item Key="ClaimsEndpoint">https://api.github.com/user</Item>
            <Item Key="HttpBinding">GET</Item>
            <Item Key="scope">read:user user:email</Item>
            <Item Key="UsePolicyInRedirectUri">0</Item>
            <Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item>  
            <Item Key="UserAgentForClaimsExchange">CPIM-Basic/{tenant}/{policy}</Item>
            <!-- Update the Client ID below to the Application ID -->
            <Item Key="client_id">Your GitHub application ID</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_GitHubSecret"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
            <OutputClaim ClaimTypeReferenceId="numericUserId" PartnerClaimType="id" />
            <OutputClaim ClaimTypeReferenceId="issuerUserId" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="github.com" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateIssuerUserId" />
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. Legen Sie client_id auf die Anwendungs-ID aus der Anwendungsregistrierung fest.

  5. Speichern Sie die Datei.

Hinzufügen von Ansprüchen von Transformationen

Das technische Profil für GitHub setzt voraus, dass die CreateIssuerUserId-Anspruchstransformationen der Liste in „ClaimsTransformations“ hinzugefügt werden. Wenn Sie kein ClaimsTransformations-Element in Ihrer Datei definiert haben, fügen Sie die übergeordneten XML-Elemente wie unten dargestellt hinzu. Die Anspruchstransformationen benötigen auch einen neuen Anspruchstyp, der mit dem Namen numericUserId definiert ist.

  1. Suchen Sie nach dem BuildingBlocks-Element . Wenn das Element nicht vorhanden ist, fügen Sie es hinzu.
  2. Suchen Sie das ClaimsSchema-Element . Wenn das Element nicht vorhanden ist, fügen Sie es hinzu.
  3. Fügen Sie den Anspruch „numericUserId“ dem ClaimsSchema-Element hinzu.
  4. Suchen Sie das Element ClaimsTransformations. Wenn das Element nicht vorhanden ist, fügen Sie es hinzu.
  5. Fügen Sie die CreateIssuerUserId-Forderungstransformationen zum ClaimsTransformations-Element hinzu.
<BuildingBlocks>
  <ClaimsSchema>
    <ClaimType Id="numericUserId">
      <DisplayName>Numeric user Identifier</DisplayName>
      <DataType>long</DataType>
    </ClaimType>
  </ClaimsSchema>
  <ClaimsTransformations>
    <ClaimsTransformation Id="CreateIssuerUserId" TransformationMethod="ConvertNumberToStringClaim">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="numericUserId" TransformationClaimType="inputClaim" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="issuerUserId" TransformationClaimType="outputClaim" />
      </OutputClaims>
    </ClaimsTransformation>
  </ClaimsTransformations>
</BuildingBlocks>

Hinzufügen einer Benutzerreise

Zum jetzigen Zeitpunkt wurde der Identitätsanbieter eingerichtet, ist aber noch nicht auf einer 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 TrustFrameworkExtensions.xml und finden 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. Legen Sie den Wert von TargetClaimsExchangeId auf einen benutzerfreundlichen Namen fest.

  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="GitHubExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="GitHubExchange" TechnicalProfileReferenceId="GitHub-OAuth2" />
  </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 für den CustomSignUpSignIn Benutzerablauf die ReferenceId 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: die Erweiterungsrichtlinie, z.B. TrustFrameworkExtensions.xml, dann die Richtlinie der vertrauenden Seite, z.B. SignUpSignIn.xml.

Testen der benutzerdefinierten Richtlinie

  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 GitHub aus, um sich mit dem GitHub-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.

Nächste Schritte