Delen via


Inschrijven en inloggen met een GitHub-account instellen via Azure Active Directory B2C

Belangrijk

Vanaf 1 mei 2025 is Azure AD B2C niet meer beschikbaar voor nieuwe klanten. Meer informatie vindt u in onze veelgestelde vragen.

Voordat u begint, gebruikt u de selector Een beleidstype kiezen boven aan deze pagina 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.

Opmerking

Deze functie is beschikbaar als openbare preview.

Belangrijk

Vanaf mei 2021 heeft GitHub een wijziging aangekondigd die van invloed is op uw aangepaste Azure AD B2C-beleidsfederatie. Als gevolg van de wijziging voegt u <Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item> metagegevens toe aan uw technische GitHub-profiel. Zie API-verificatie afschaven via queryparameters voor meer informatie.

Vereiste voorwaarden

Een GitHub OAuth-toepassing maken

Als u aanmelding wilt inschakelen met een GitHub-account in Azure Active Directory B2C (Azure AD B2C), moet u een toepassing maken in de GitHub Developer-portal . Zie Een OAuth-app maken voor meer informatie. Als u nog geen GitHub-account hebt, kunt u zich aanmelden bij https://www.github.com/.

  1. Meld u met uw GitHub-referenties aan bij de GitHub-ontwikkelaar .
  2. Selecteer OAuth-apps en selecteer vervolgens Nieuwe OAuth-app.
  3. Voer een toepassingsnaam en de URL van uw startpagina in.
  4. Voer voor de autorisatie callback-URLhttps://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp in. Als u een aangepast domein gebruikt, voert u het volgende in https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp. Vervang your-domain-name door uw aangepaste domein en your-tenant-name door de naam van uw tenant. Gebruik alle kleine letters bij het invoeren van uw tenantnaam, zelfs als de tenant is gedefinieerd met hoofdletters in Azure AD B2C.
  5. Klik op Toepassing registreren.
  6. Kopieer de waarden van client-id en clientgeheim. U moet beide de id-provider toevoegen aan uw tenant.

GitHub configureren als id-provider

  1. Meld u aan bij Azure Portal met een account met ten minste beheerdersbevoegdheden voor externe id-providers .
  2. Als u toegang hebt tot meerdere tenants, selecteert u het pictogram Instellingen in het hoofdmenu om over te schakelen naar uw Azure AD B2C-tenant vanuit het menu Mappen + abonnementen.
  3. Kies Alle services in de linkerbovenhoek van Azure Portal, zoek en selecteer Azure AD B2C.
  4. Selecteer Identiteitsproviders, en selecteer vervolgens GitHub (Preview).
  5. Voer een naam in. Bijvoorbeeld GitHub.
  6. Voer voor de client-id de client-id in van de GitHub-toepassing die u eerder hebt gemaakt.
  7. Voer voor het clientgeheim het clientgeheim in dat u hebt vastgelegd.
  8. Selecteer Opslaan.

GitHub-id-provider toevoegen aan een gebruikersstroom

Op dit moment is de GitHub-id-provider ingesteld, maar deze is nog niet beschikbaar op een van de aanmeldingspagina's. De GitHub-id-provider toevoegen aan een gebruikersstroom:

  1. Selecteer gebruikersstromen in uw Azure AD B2C-tenant.
  2. Klik op de gebruikersstroom waaraan u de GitHub-identiteitsprovider wilt toevoegen.
  3. Selecteer GitHub onder de id-providers voor sociale netwerken.
  4. Selecteer Opslaan.
  5. Selecteer Gebruikersstroom uitvoeren om uw beleid te testen.
  6. Selecteer voor Toepassing de webtoepassing met de naam testapp1 die u eerder hebt geregistreerd. De antwoord-URL moet https://jwt.ms weergeven.
  7. Klik op de knop Voer gebruikersstroom uit.
  8. Selecteer Op de registratie- of aanmeldingspagina GitHub om u aan te melden met een GitHub-account.

Als het aanmeldingsproces is geslaagd, wordt uw browser omgeleid naar https://jwt.ms, waarin de inhoud van het token wordt weergegeven dat wordt geretourneerd door Azure AD B2C.

Een beleidssleutel maken

U moet het clientgeheim opslaan dat u eerder hebt vastgelegd in uw Azure AD B2C-tenant.

  1. Meld u aan bij het Azure-portaal.
  2. Als u toegang hebt tot meerdere tenants, selecteert u het pictogram Instellingen in het hoofdmenu om over te schakelen naar uw Azure AD B2C-tenant vanuit het menu Mappen + abonnementen.
  3. Kies Alle services in de linkerbovenhoek van de Azure Portal en zoek naar en selecteer Azure AD B2C.
  4. Selecteer Identity Experience Framework op de pagina Overzicht.
  5. Selecteer Beleidssleutels en selecteer vervolgens Toevoegen.
  6. Kies voor Opties de optie Manual.
  7. Voer een naam in voor de beleidssleutel. Bijvoorbeeld: GitHubSecret. Het voorvoegsel B2C_1A_ wordt automatisch toegevoegd aan de naam van uw sleutel.
  8. Voer in geheim uw clientgeheim in dat u eerder hebt opgenomen.
  9. Voor sleutelgebruik selecteert u Signature.
  10. Klik op Create.

GitHub configureren als id-provider

Als u wilt dat gebruikers zich kunnen aanmelden met een GitHub-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 GitHub-account definiëren als een claimprovider door dit toe te voegen aan het element ClaimsProviders in het extensiebestand van uw beleid.

  1. Open de TrustFrameworkExtensions.xml.

  2. Zoek het element ClaimsProviders . Als deze niet bestaat, voegt u deze toe onder het hoofdelement.

  3. Voeg als volgt een nieuwe ClaimsProvider toe:

    <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. Stel client_id in op de toepassings-id van de toepassingregistratie.

  5. Sla het bestand op.

De claimtransformaties toevoegen

Voor het technische profiel van GitHub moeten de claimtransformaties van CreateIssuerUserId worden toegevoegd aan de lijst met claimtransformaties. Als u geen ClaimTransformations-element hebt gedefinieerd in uw bestand, voegt u de bovenliggende XML-elementen toe, zoals hieronder wordt weergegeven. De claimtransformaties hebben ook een nieuw claimtype nodig dat is gedefinieerd met de naam numericUserId.

  1. Zoek het element BuildingBlocks . Als het element niet bestaat, voegt u het toe.
  2. Zoek het element ClaimsSchema . Als het element niet bestaat, voegt u het toe.
  3. Voeg de claim numericUserId toe aan het element ClaimsSchema .
  4. Zoek het element ClaimsTransformations . Als het element niet bestaat, voegt u het toe.
  5. Voeg de transformaties van CreateIssuerUserId-claims toe aan het element ClaimsTransformations .
<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>

Een gebruikerstraject toevoegen

Op dit moment is de id-provider ingesteld, maar deze is nog niet beschikbaar op een van de aanmeldingspagina's. Als u geen eigen aangepast gebruikerstraject hebt, maakt u een duplicaat van een bestaand sjabloongebruikerstraject. Ga anders verder met de volgende stap.

  1. Open het bestandTrustFrameworkBase.xml vanuit het starterspakket.
  2. Zoek en kopieer de volledige inhoud van het UserJourney-element waarin Id="SignUpOrSignIn" voorkomt.
  3. Open de TrustFrameworkExtensions.xml en zoek het element UserJourneys . Als het element niet bestaat, voegt u er een toe.
  4. Plak de volledige inhoud van het UserJourney-element dat u hebt gekopieerd als een kind van het element UserJourneys .
  5. Wijzig de naam van de ID van de gebruikersreis. Bijvoorbeeld: Id="CustomSignUpSignIn".

De id-provider toevoegen aan een gebruikerstraject

Nu u een gebruikerstraject hebt, voegt u de nieuwe id-provider toe aan het gebruikerstraject. U voegt eerst een aanmeldingsknop toe en koppelt vervolgens de knop aan een actie. Het technische profiel dat u eerder hebt gedefinieerd is de actie.

  1. Zoek het orkestratiestap-element dat Type="CombinedSignInAndSignUp" of Type="ClaimsProviderSelection" bevat in de gebruiksreis. Dit is meestal de eerste orkestratiestap. 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 aan de gebruiker gepresenteerde aanmeldingsknoppen. Voeg een XML-element ClaimsProviderSelection toe. Stel de waarde van TargetClaimsExchangeId in op een vriendelijke naam.

  2. Voeg in de volgende orkestratiestap een ClaimsExchange-element 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="GitHubExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="GitHubExchange" TechnicalProfileReferenceId="GitHub-OAuth2" />
  </ClaimsExchanges>
</OrchestrationStep>

Het vertrouwende partij-beleid configureren

Het relying party-beleid, bijvoorbeeld SignUpSignIn.xml, geeft het gebruikerstraject op dat Door Azure AD B2C wordt uitgevoerd. Zoek het element DefaultUserJourney in relying party. Werk de ReferenceId bij zodat deze overeenkomt met de ID van de gebruikersreis, waarin u de identity provider hebt toegevoegd.

In het volgende voorbeeld is de CustomSignUpSignIn voor het gebruikerstraject ingesteld opCustomSignUpSignIn:

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

Het aangepaste beleid uploaden

  1. Meld u aan bij het Azure-portaal.
  2. Selecteer het pictogram Directory + Abonnement in de portalwerkbalk 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 Beleidde optie Identity Experience Framework.
  5. Selecteer Aangepast beleid uploaden en upload vervolgens de twee beleidsbestanden die u hebt gewijzigd, in de volgende volgorde: het extensiebeleid, bijvoorbeeld TrustFrameworkExtensions.xml, en vervolgens het relying party-beleid, zoals SignUpSignIn.xml.

Uw aangepaste beleid testen

  1. Selecteer uw relying party-beleid, bijvoorbeeld B2C_1A_signup_signin.
  2. Selecteer voor Toepassing een webtoepassing die u eerder hebt geregistreerd. De antwoord-URL moet https://jwt.ms weergeven.
  3. Selecteer de knop Nu uitvoeren .
  4. Selecteer Op de registratie- of aanmeldingspagina GitHub om u aan te melden met een GitHub-account.

Als het aanmeldingsproces is geslaagd, wordt uw browser omgeleid naar https://jwt.ms, waarin de inhoud van het token wordt weergegeven dat wordt geretourneerd door Azure AD B2C.

Volgende stappen