Regisztráció és bejelentkezés beállítása GitHub fiókkal Azure Active Directory B2C használatával

Mielőtt hozzákezdene, válassza ki a beállított szabályzattípust a Szabályzattípus kiválasztása választóval. Azure Active Directory B2C két módszert kínál annak meghatározására, hogy a felhasználók hogyan használják az alkalmazásokat: előre meghatározott felhasználói folyamatokon vagy teljes mértékben konfigurálható egyéni szabályzatokon keresztül. Az ebben a cikkben leírt lépések különbözőek az egyes metódusok esetében.

Megjegyzés

Ez a funkció nyilvános előzetes verzióban érhető el.

Fontos

2021 májusától GitHub bejelentett egy módosítást, amely hatással van az Azure AD B2C egyéni szabályzatok összevonására. A módosítás miatt adja hozzá <Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item> a metaadatokat a GitHub technikai profiljához. További információt az API-hitelesítés lekérdezési paraméterekkel történő elavultatásával kapcsolatban talál.

Előfeltételek

GitHub OAuth-alkalmazás létrehozása

Ha GitHub-fiókkal szeretne bejelentkezni Azure Active Directory B2C-ben (Azure AD B2C), létre kell hoznia egy alkalmazást GitHub fejlesztői portálon. További információ: OAuth-alkalmazás létrehozása. Ha még nem rendelkezik GitHub fiókkal, regisztrálhat a webhelyenhttps://www.github.com/.

  1. Jelentkezzen be a GitHub Fejlesztőbe a GitHub hitelesítő adataival.
  2. Válassza az OAuth-alkalmazások , majd az Új OAuth-alkalmazás lehetőséget.
  3. Adja meg az alkalmazás nevét és a kezdőlap URL-címét.
  4. Az engedélyezési visszahívási URL-címhez írja be a következőt https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp: . Ha egyéni tartományt használ, írja be a következőt https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp: . Cserélje le your-domain-name az egyéni tartományra és your-tenant-name a bérlő nevére. A bérlő nevének megadásakor minden kisbetűt használjon, még akkor is, ha a bérlő nagybetűkkel van definiálva az Azure AD B2C-ben.
  5. Kattintson az Alkalmazás regisztrálása gombra.
  6. Másolja ki az ügyfél-azonosító és az ügyfélkulcs értékeit. Mindkettőnek hozzá kell adnia az identitásszolgáltatót a bérlőhöz.

GitHub konfigurálása identitásszolgáltatóként

  1. Jelentkezzen be az Azure Portalra az Azure AD B2C-bérlő globális rendszergazdájaként.
  2. Győződjön meg arról, hogy az Azure AD B2C-bérlőt tartalmazó címtárat használja. Válassza a Címtárak és előfizetések ikont a portál eszköztárán.
  3. A Portál beállításai | A Címtárak és előfizetések lapon keresse meg az Azure AD B2C-címtárat a Címtárnév listában, majd válassza a Váltás lehetőséget.
  4. Válassza az Azure Portal bal felső sarkában található Minden szolgáltatás lehetőséget, majd keresse meg és válassza ki az Azure AD B2C-t.
  5. Válassza az Identitásszolgáltatók lehetőséget, majd a GitHub (előzetes verzió) lehetőséget.
  6. Adjon meg egy nevet. Például GitHub.
  7. Az ügyfélazonosítóhoz adja meg a korábban létrehozott GitHub alkalmazás ügyfél-azonosítóját.
  8. Az ügyfél titkos kódjának megadásához adja meg a rögzített titkos ügyfélkulcsot.
  9. Kattintson a Mentés gombra.

GitHub identitásszolgáltató hozzáadása egy felhasználói folyamathoz

Ezen a ponton a GitHub identitásszolgáltató már be van állítva, de még nem érhető el egyik bejelentkezési oldalon sem. Az GitHub identitásszolgáltató hozzáadása egy felhasználói folyamathoz:

  1. Az Azure AD B2C-bérlőben válassza ki a felhasználói folyamatokat.
  2. Kattintson arra a felhasználói folyamatra, amelyhez hozzá szeretné adni a GitHub identitásszolgáltatót.
  3. A Közösségi identitásszolgáltatók területen válassza a GitHub.
  4. Kattintson a Mentés gombra.
  5. A szabályzat teszteléséhez válassza a Felhasználói folyamat futtatása lehetőséget.
  6. Az Application esetében válassza ki a testapp1 nevű webalkalmazást, amelyet korábban regisztrált. A válasz URL-címének meg kell jelennie https://jwt.ms.
  7. Válassza a Felhasználói folyamat futtatása gombot.
  8. A regisztrációs vagy bejelentkezési lapon válassza a GitHub lehetőséget GitHub fiókkal való bejelentkezéshez.

Ha a bejelentkezési folyamat sikeres, a rendszer átirányítja a böngészőt https://jwt.ms, amely megjeleníti az Azure AD B2C által visszaadott jogkivonat tartalmát.

Szabályzatkulcs létrehozása

Az Azure AD B2C-bérlőben korábban rögzített ügyfélkulcsot kell tárolnia.

  1. Jelentkezzen be az Azure Portalra.
  2. Győződjön meg arról, hogy az Azure AD B2C-bérlőt tartalmazó címtárat használja. Válassza a Címtárak és előfizetések ikont a portál eszköztárán.
  3. A Portál beállításai | A Címtárak és előfizetések lapon keresse meg az Azure AD B2C-címtárat a Címtárnév listában, majd válassza a Váltás lehetőséget.
  4. Válassza az Összes szolgáltatást a Azure Portal bal felső sarkában, majd keresse meg és válassza ki az Azure AD B2C-t.
  5. Az Áttekintés lapon válassza az Identity Experience Framework lehetőséget.
  6. Válassza a Házirendkulcsok , majd a Hozzáadás lehetőséget.
  7. A Beállítások beállításnál válassza a Manuallehetőséget.
  8. Adja meg a szabályzatkulcs nevét . Például: GitHubSecret. A rendszer automatikusan hozzáadja az előtagot B2C_1A_ a kulcs nevéhez.
  9. A Titkos kód mezőbe írja be a korábban rögzített titkos ügyfélkulcsot.
  10. Kulcshasználat esetén válassza a Signaturelehetőséget.
  11. Kattintson a Létrehozás lehetőségre.

GitHub konfigurálása identitásszolgáltatóként

Ahhoz, hogy a felhasználók GitHub-fiókkal jelentkezzenek be, meg kell határoznia a fiókot jogcímszolgáltatóként, amellyel az Azure AD B2C egy végponton keresztül tud kommunikálni. A végpont olyan jogcímeket biztosít, amelyeket az Azure AD B2C használ annak ellenőrzésére, hogy egy adott felhasználó hitelesített-e.

Egy GitHub-fiókot jogcímszolgáltatóként is definiálhat, ha hozzáadja azt a szabályzat bővítményfájljában található ClaimsProviders elemhez.

  1. Nyissa meg a TrustFrameworkExtensions.xml.

  2. Keresse meg a ClaimsProviders elemet. Ha nem létezik, adja hozzá a gyökérelemhez.

  3. Adjon hozzá egy új ClaimsProvidert az alábbiak szerint:

    <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. Állítsa client_id az alkalmazásregisztrációból származó alkalmazásazonosítóra.

  5. Mentse a fájlt.

Jogcímátalakítások hozzáadása

A GitHub technikai profilhoz hozzá kell adni a CreateIssuerUserId jogcímátalakításokat a Jogcímtranszformációk listájához. Ha nem rendelkezik a fájlban definiált ClaimsTransformations elemekkel, adja hozzá a szülő XML-elemeket az alább látható módon. A jogcímátalakításokhoz szükség van egy numericUserId nevű új jogcímtípusra is.

  1. Keresse meg a BuildingBlocks elemet. Ha az elem nem létezik, adja hozzá.
  2. Keresse meg a ClaimsSchema elemet. Ha az elem nem létezik, adja hozzá.
  3. Adja hozzá a numericUserId jogcímet a ClaimsSchema elemhez.
  4. Keresse meg a ClaimsTransformations elemet. Ha az elem nem létezik, adja hozzá.
  5. Adja hozzá a CreateIssuerUserId jogcímátalakításokat a ClaimsTransformations elemhez.
<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>

Felhasználói folyamat hozzáadása

Ezen a ponton az identitásszolgáltató már be van állítva, de még nem érhető el egyik bejelentkezési oldalon sem. Ha nem rendelkezik saját egyéni felhasználói folyamatokkal, hozzon létre egy meglévő sablonfelhasználói folyamat duplikátumát, ellenkező esetben folytassa a következő lépéssel.

  1. Nyissa meg a TrustFrameworkBase.xml fájlt a kezdőcsomagból.
  2. Keresse meg és másolja ki a UserJourney elem teljes tartalmát, amely tartalmazza Id="SignUpOrSignIn".
  3. Nyissa meg a TrustFrameworkExtensions.xml , és keresse meg a UserJourneys elemet. Ha az elem nem létezik, adjon hozzá egyet.
  4. Illessze be a UserJourney elem gyermekelemeként kimásolt UserJourney elem teljes tartalmát.
  5. Nevezze át a felhasználói folyamat azonosítóját. Például: Id="CustomSignUpSignIn".

Az identitásszolgáltató hozzáadása egy felhasználói folyamathoz

Most, hogy elkészült a felhasználói folyamat, adja hozzá az új identitásszolgáltatót a felhasználói folyamathoz. Először vegyen fel egy bejelentkezési gombot, majd kapcsolja a gombot egy művelethez. A művelet a korábban létrehozott technikai profil.

  1. Keresse meg a vezénylési lépés azon elemét, amely tartalmazza Type="CombinedSignInAndSignUp"a felhasználói Type="ClaimsProviderSelection" folyamatot. Általában ez az első vezénylési lépés. A ClaimsProviderSelections elem azon identitásszolgáltatók listáját tartalmazza, amelyekkel a felhasználó bejelentkezhet. Az elemek sorrendje határozza meg a felhasználónak megjelenő bejelentkezési gombok sorrendjét. Adjon hozzá egy ClaimsProviderSelection XML-elemet. Állítsa a TargetClaimsExchangeId értékét egy felhasználóbarát névre.

  2. A következő vezénylési lépésben adjon hozzá egy ClaimsExchange elemet. Állítsa az azonosítót a céljogcímcsere-azonosító értékére. Frissítse a TechnicalProfileReferenceId értékét a korábban létrehozott műszaki profil azonosítójára.

A következő XML a felhasználói folyamat első két vezénylési lépését mutatja be az identitásszolgáltatóval:

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

A függő entitás házirendjének konfigurálása

A függő entitás szabályzata, például SignUpSignIn.xml, meghatározza a felhasználói folyamatot, amelyet az Azure AD B2C végre fog hajtani. Keresse meg a DefaultUserJourney elemet a függő entitáson belül. Frissítse a ReferenceId azonosítót úgy, hogy megegyezzon a felhasználói út azonosítójával, amelyben hozzáadta az identitásszolgáltatót.

A következő példában a CustomSignUpSignIn felhasználói folyamat esetében a ReferenceId a következőre CustomSignUpSignInvan állítva:

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

Az egyéni szabályzat feltöltése

  1. Jelentkezzen be az Azure Portalra.
  2. Válassza a Címtár és előfizetés ikont a portál eszköztárán, majd válassza ki az Azure AD B2C-bérlőt tartalmazó címtárat.
  3. A Azure Portal keresse meg és válassza ki az Azure AD B2C-t.
  4. A Szabályzatok területen válassza az Identity Experience Framework lehetőséget.
  5. Válassza az Egyéni házirend feltöltése lehetőséget, majd töltse fel a módosított két házirendfájlt a következő sorrendben: a bővítményházirend, például TrustFrameworkExtensions.xmla függő entitás házirendje, például SignUpSignIn.xml.

Az egyéni szabályzat tesztelése

  1. Válassza ki például B2C_1A_signup_signina függő entitás szabályzatát.
  2. Alkalmazás esetén válasszon ki egy korábban regisztrált webalkalmazást. A válasz URL-címnek meg kell jelennie https://jwt.ms.
  3. Válassza a Futtatás most gombot.
  4. A regisztrációs vagy bejelentkezési oldalon válassza a GitHub lehetőséget GitHub fiókkal való bejelentkezéshez.

Ha a bejelentkezési folyamat sikeres, a rendszer átirányítja a böngészőt https://jwt.ms, amely megjeleníti az Azure AD B2C által visszaadott jogkivonat tartalmát.

Következő lépések