Konfigurowanie rejestracji i logowania przy użyciu konta GitHub przy użyciu usługi Azure Active Directory B2C

Przed rozpoczęciem użyj selektora Wybierz typ zasad , aby wybrać typ konfigurowanych zasad. Azure Active Directory B2C oferuje dwie metody definiowania sposobu interakcji użytkowników z aplikacjami: za pomocą wstępnie zdefiniowanych przepływów użytkownika lub w pełni konfigurowalnych zasad niestandardowych. Kroki wymagane w tym artykule są inne dla każdej metody.

Uwaga

Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

Ważne

Od maja 2021 r. GitHub ogłosiła zmianę, która ma wpływ na federację zasad niestandardowych usługi Azure AD B2C. Ze względu na zmianę dodaj <Item Key="BearerTokenTransmissionMethod">AuthorizationHeader</Item> metadane do profilu technicznego GitHub. Aby uzyskać więcej informacji, zobacz Przestarzałe uwierzytelnianie interfejsu API za pomocą parametrów zapytania.

Wymagania wstępne

Tworzenie aplikacji OAuth GitHub

Aby włączyć logowanie przy użyciu konta GitHub w usłudze Azure Active Directory B2C (Azure AD B2C), należy utworzyć aplikację w portalu deweloperów GitHub. Aby uzyskać więcej informacji, zobacz Tworzenie aplikacji OAuth. Jeśli nie masz jeszcze konta GitHub, możesz zarejestrować się pod adresem https://www.github.com/.

  1. Zaloguj się do dewelopera GitHub przy użyciu poświadczeń GitHub.
  2. Wybierz pozycję Aplikacje OAuth , a następnie wybierz pozycję Nowa aplikacja OAuth.
  3. Wprowadź nazwę aplikacji i adres URL strony głównej.
  4. W polu Adres URL wywołania zwrotnego autoryzacji wprowadź .https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp Jeśli używasz domeny niestandardowej, wprowadź .https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp Zastąp your-domain-name ciąg swoją domeną niestandardową i your-tenant-name nazwą dzierżawy. Użyj wszystkich małych liter podczas wprowadzania nazwy dzierżawy, nawet jeśli dzierżawa jest zdefiniowana z wielkimi literami w usłudze Azure AD B2C.
  5. Kliknij pozycję Zarejestruj aplikację.
  6. Skopiuj wartości Identyfikator klienta i Klucz tajny klienta. Musisz dodać dostawcę tożsamości do dzierżawy.

Konfigurowanie GitHub jako dostawcy tożsamości

  1. Zaloguj się w witrynie Azure Portal jako administrator globalny dzierżawy usługi Azure AD B2C.
  2. Upewnij się, że używasz katalogu zawierającego dzierżawę usługi Azure AD B2C. Wybierz ikonę Katalogi i subskrypcje na pasku narzędzi portalu.
  3. W ustawieniach portalu | Strona Katalogi i subskrypcje , znajdź katalog usługi Azure AD B2C na liście Nazwa katalogu , a następnie wybierz pozycję Przełącz.
  4. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.
  5. Wybierz pozycję Dostawcy tożsamości, a następnie wybierz pozycję GitHub (wersja zapoznawcza).
  6. Wprowadź nazwę. Na przykład GitHub.
  7. W polu Identyfikator klienta wprowadź identyfikator klienta utworzonej wcześniej aplikacji GitHub.
  8. W polu Klucz tajny klienta wprowadź zarejestrowany klucz tajny klienta.
  9. Wybierz pozycję Zapisz.

Dodawanie dostawcy tożsamości GitHub do przepływu użytkownika

W tym momencie skonfigurowano dostawcę tożsamości GitHub, ale nie jest jeszcze dostępny na żadnej ze stron logowania. Aby dodać dostawcę tożsamości GitHub do przepływu użytkownika:

  1. W dzierżawie usługi Azure AD B2C wybierz pozycję Przepływy użytkownika.
  2. Kliknij przepływ użytkownika, który chcesz dodać dostawcę tożsamości GitHub.
  3. W obszarze Dostawcy tożsamości społecznościowych wybierz pozycję GitHub.
  4. Wybierz pozycję Zapisz.
  5. Aby przetestować zasady, wybierz pozycję Uruchom przepływ użytkownika.
  6. W polu Aplikacja wybierz aplikację internetową o nazwie testapp1 , która została wcześniej zarejestrowana. Adres URL odpowiedzi powinien zawierać wartość https://jwt.ms.
  7. Wybierz przycisk Uruchom przepływ użytkownika .
  8. Na stronie rejestracji lub logowania wybierz pozycję GitHub, aby zalogować się przy użyciu konta GitHub.

Jeśli proces logowania zakończy się pomyślnie, przeglądarka zostanie przekierowana do https://jwt.msusługi , która wyświetla zawartość tokenu zwróconego przez usługę Azure AD B2C.

Tworzenie klucza zasad

Musisz przechowywać wpis tajny klienta, który został wcześniej zarejestrowany w dzierżawie usługi Azure AD B2C.

  1. Zaloguj się w witrynie Azure Portal.
  2. Upewnij się, że używasz katalogu zawierającego dzierżawę usługi Azure AD B2C. Wybierz ikonę Katalogi i subskrypcje na pasku narzędzi portalu.
  3. W ustawieniach portalu | Strona Katalogi i subskrypcje , znajdź katalog usługi Azure AD B2C na liście Nazwa katalogu , a następnie wybierz pozycję Przełącz.
  4. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.
  5. Na stronie Przegląd wybierz pozycję Identity Experience Framework.
  6. Wybierz pozycję Klucze zasad , a następnie wybierz pozycję Dodaj.
  7. W obszarze Opcje wybierz pozycję Manual.
  8. Wprowadź nazwę klucza zasad. Na przykład GitHubSecret. Prefiks B2C_1A_ jest dodawany automatycznie do nazwy klucza.
  9. W obszarze Wpis tajny wprowadź wcześniej zarejestrowany klucz tajny klienta.
  10. W obszarze Użycie klucza wybierz pozycję Signature.
  11. Kliknij pozycję Utwórz.

Konfigurowanie GitHub jako dostawcy tożsamości

Aby umożliwić użytkownikom logowanie się przy użyciu konta GitHub, musisz zdefiniować konto jako dostawcę oświadczeń, z którym usługa Azure AD B2C może komunikować się za pośrednictwem punktu końcowego. Punkt końcowy udostępnia zestaw oświadczeń używanych przez usługę Azure AD B2C do sprawdzania, czy określony użytkownik został uwierzytelniony.

Konto GitHub można zdefiniować jako dostawcę oświadczeń, dodając je do elementu ClaimsProviders w pliku rozszerzenia zasad.

  1. Otwórz TrustFrameworkExtensions.xml.

  2. Znajdź element ClaimsProviders . Jeśli nie istnieje, dodaj go w obszarze elementu głównego.

  3. Dodaj nowy element ClaimsProvider w następujący sposób:

    <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. Ustaw client_id na identyfikator aplikacji z rejestracji aplikacji.

  5. Zapisz plik.

Dodawanie przekształceń oświadczeń

Profil techniczny GitHub wymaga dodania przekształceń oświadczeń CreateIssuerUserId do listy oświadczeńTransformations. Jeśli nie masz elementu ClaimsTransformations zdefiniowanego w pliku, dodaj nadrzędne elementy XML, jak pokazano poniżej. Przekształcenia oświadczeń wymagają również nowego typu oświadczenia zdefiniowanego o nazwie numericUserId.

  1. Wyszukaj element BuildingBlocks . Jeśli element nie istnieje, dodaj go.
  2. Znajdź element ClaimsSchema . Jeśli element nie istnieje, dodaj go.
  3. Dodaj oświadczenie numericUserId do elementu ClaimsSchema .
  4. Znajdź element ClaimsTransformations . Jeśli element nie istnieje, dodaj go.
  5. Dodaj przekształcenia oświadczeń CreateIssuerUserId do elementu 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>

Dodawanie podróży użytkownika

Na tym etapie dostawca tożsamości został skonfigurowany, ale nie jest jeszcze dostępny na żadnej ze stron logowania. Jeśli nie masz własnej podróży użytkownika niestandardowego, utwórz duplikat istniejącej podróży użytkownika szablonu, w przeciwnym razie przejdź do następnego kroku.

  1. Otwórz plik TrustFrameworkBase.xml z pakietu startowego.
  2. Znajdź i skopiuj całą zawartość elementu UserJourney , który zawiera Id="SignUpOrSignIn"element .
  3. Otwórz TrustFrameworkExtensions.xml i znajdź element UserJourneys . Jeśli element nie istnieje, dodaj go.
  4. Wklej całą zawartość elementu UserJourney skopiowaną jako element podrzędny elementu UserJourneys .
  5. Zmień nazwę identyfikatora podróży użytkownika. Na przykład Id="CustomSignUpSignIn".

Dodawanie dostawcy tożsamości do podróży użytkownika

Teraz, gdy masz podróż użytkownika, dodaj nowego dostawcę tożsamości do podróży użytkownika. Najpierw dodasz przycisk logowania, a następnie połącz przycisk z akcją. Akcja to utworzony wcześniej profil techniczny.

  1. Znajdź element kroku aranżacji, który zawiera Type="CombinedSignInAndSignUp"element , lub Type="ClaimsProviderSelection" w podróży użytkownika. Zazwyczaj jest to pierwszy krok aranżacji. Element ClaimsProviderSelections zawiera listę dostawców tożsamości, za pomocą których użytkownik może się zalogować. Kolejność elementów kontroluje kolejność przycisków logowania przedstawionych użytkownikowi. Dodaj element ClaimsProviderSelection XML. Ustaw wartość TargetClaimsExchangeId na przyjazną nazwę.

  2. W następnym kroku aranżacji dodaj element ClaimsExchange . Ustaw identyfikator na wartość identyfikatora wymiany oświadczeń docelowych. Zaktualizuj wartość TechnicalProfileReferenceId na identyfikator utworzonego wcześniej profilu technicznego.

Poniższy kod XML przedstawia dwa pierwsze kroki orkiestracji podróży użytkownika z dostawcą tożsamości:

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

Konfigurowanie zasad jednostki uzależnionej

Zasady jednostki uzależnionej, na przykład SignUpSignIn.xml, określają podróż użytkownika, który zostanie wykonany przez usługę Azure AD B2C. Znajdź element DefaultUserJourney w ramach jednostki uzależnionej. Zaktualizuj identyfikator ReferenceId , aby był zgodny z identyfikatorem podróży użytkownika, w którym dodano dostawcę tożsamości.

W poniższym przykładzie CustomSignUpSignIn dla podróży użytkownika identyfikator ReferenceId jest ustawiony na CustomSignUpSignInwartość :

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

Upload zasad niestandardowych

  1. Zaloguj się w witrynie Azure Portal.
  2. Wybierz ikonę Katalog i subskrypcja na pasku narzędzi portalu, a następnie wybierz katalog zawierający dzierżawę usługi Azure AD B2C.
  3. W Azure Portal wyszukaj i wybierz pozycję Azure AD B2C.
  4. W obszarze Zasady wybierz pozycję Struktura środowiska tożsamości.
  5. Wybierz Upload zasady niestandardowe, a następnie przekaż dwa zmienione pliki zasad w następującej kolejności: zasady rozszerzenia, na przykład TrustFrameworkExtensions.xml, a następnie zasady jednostki uzależnionej, takie jak SignUpSignIn.xml.

Testowanie zasad niestandardowych

  1. Wybierz zasady jednostki uzależnionej, na przykład B2C_1A_signup_signin.
  2. W obszarze Aplikacja wybierz wcześniej zarejestrowaną aplikację internetową. Adres URL odpowiedzi powinien zawierać wartość https://jwt.ms.
  3. Wybierz przycisk Uruchom teraz .
  4. Na stronie rejestracji lub logowania wybierz pozycję GitHub, aby zalogować się przy użyciu konta GitHub.

Jeśli proces logowania zakończy się pomyślnie, przeglądarka zostanie przekierowana do https://jwt.ms, która wyświetla zawartość tokenu zwróconego przez usługę Azure AD B2C.

Następne kroki