Przekazywanie tokenu dostępu dostawcy tożsamości do aplikacji w usłudze Azure Active Directory B2C

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

Przepływ użytkownika w usłudze Azure Active Directory B2C (Azure AD B2C) zapewnia użytkownikom aplikacji możliwość zarejestrowania się lub zalogowania się u dostawcy tożsamości. Po rozpoczęciu podróży usługa Azure AD B2C odbiera token dostępu od dostawcy tożsamości. Usługa Azure AD B2C używa tego tokenu do pobierania informacji o użytkowniku. Możesz włączyć oświadczenie w przepływie użytkownika, aby przekazać token do aplikacji zarejestrowanych w usłudze Azure AD B2C.

Usługa Azure AD B2C obsługuje przekazywanie tokenu dostępu dostawców tożsamości OAuth 2.0 , takich jak Facebook i Google. W przypadku wszystkich innych dostawców tożsamości oświadczenie jest zwracane puste.

Usługa Azure AD B2C obsługuje przekazywanie tokenu dostępu dostawców tożsamości OAuth 2.0 i OpenID Połączenie. W przypadku wszystkich innych dostawców tożsamości oświadczenie jest zwracane puste. Aby uzyskać więcej informacji, zapoznaj się z pokazem federacyjnym dostawców tożsamości na żywo.

Na poniższym diagramie przedstawiono sposób powrotu tokenu dostawcy tożsamości do aplikacji:

Identity provider pass through flow

Wymagania wstępne

Włączanie oświadczenia

  1. Zaloguj się w witrynie Azure Portal jako administrator globalny dzierżawy usługi Azure AD B2C.

  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.

  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.

  4. Wybierz pozycję Przepływy użytkownika (zasady), a następnie wybierz przepływ użytkownika. Na przykład B2C_1_signupsignin1.

  5. Wybierz pozycję Oświadczenia aplikacji.

  6. Włącz oświadczenie tokenu dostępu dostawcy tożsamości.

    Enable the Identity Provider Access Token claim

  7. Kliknij przycisk Zapisz , aby zapisać przepływ użytkownika.

Testowanie przepływu użytkownika

Podczas testowania aplikacji w usłudze Azure AD B2C może być przydatne zwrócenie tokenu usługi Azure AD B2C w celu https://jwt.ms przejrzenia w nim oświadczeń.

  1. Na stronie Przegląd przepływu użytkownika wybierz pozycję Uruchom przepływ użytkownika.

  2. W polu Aplikacja wybierz aplikację, która została wcześniej zarejestrowana. Aby wyświetlić token w poniższym przykładzie, adres URL odpowiedzi powinien zawierać wartość https://jwt.ms.

  3. Kliknij pozycję Uruchom przepływ użytkownika, a następnie zaloguj się przy użyciu poświadczeń konta. W oświadczeniu idp_access_token powinien zostać wyświetlony token dostępu dostawcy tożsamości.

    Powinien zostać wyświetlony kod podobny do poniższego przykładu:

    Decoded token in jwt.ms with idp_access_token block highlighted

Dodawanie elementów oświadczenia

  1. Otwórz plik TrustframeworkExtensions.xml i dodaj następujący element ClaimType z identyfikatorem identityProviderAccessToken elementu ClaimsSchema:

    <BuildingBlocks>
      <ClaimsSchema>
        <ClaimType Id="identityProviderAccessToken">
          <DisplayName>Identity Provider Access Token</DisplayName>
          <DataType>string</DataType>
          <AdminHelpText>Stores the access token of the identity provider.</AdminHelpText>
        </ClaimType>
        ...
      </ClaimsSchema>
    </BuildingBlocks>
    
  2. Dodaj element OutputClaim do elementu TechnicalProfile dla każdego dostawcy tożsamości OAuth 2.0, dla którego chcesz uzyskać token dostępu. W poniższym przykładzie pokazano element dodany do profilu technicznego serwisu Facebook:

    <ClaimsProvider>
      <DisplayName>Facebook</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Facebook-OAUTH">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" />
          </OutputClaims>
          ...
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. Zapisz plik TrustframeworkExtensions.xml.

  4. Otwórz plik zasad jednostki uzależnionej, taki jak SignUpOrSignIn.xml, i dodaj element OutputClaim do pliku TechnicalProfile:

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="idp_access_token"/>
        </OutputClaims>
        ...
      </TechnicalProfile>
    </RelyingParty>
    
  5. Zapisz plik zasad.

Przetestuj swoje zasady

Podczas testowania aplikacji w usłudze Azure AD B2C może być przydatne zwrócenie https://jwt.ms tokenu usługi Azure AD B2C w celu sprawdzenia w nim oświadczeń.

Przekazywanie plików

  1. Zaloguj się w witrynie Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.
  4. Wybierz pozycję Identity Experience Framework(Struktura obsługi tożsamości).
  5. Na stronie Zasady niestandardowe kliknij pozycję Przekaż zasady.
  6. Wybierz pozycję Zastąp zasady, jeśli istnieją, a następnie wyszukaj i wybierz plik TrustframeworkExtensions.xml .
  7. Wybierz opcję Prześlij.
  8. Powtórz kroki od 5 do 7 dla pliku jednostki uzależnionej, na przykład SignUpOrSignIn.xml.

Uruchamianie zasad

  1. Otwórz zmienione zasady. Na przykład B2C_1A_signup_signin.

  2. W polu Aplikacja wybierz aplikację, która została wcześniej zarejestrowana. Aby wyświetlić token w poniższym przykładzie, adres URL odpowiedzi powinien zawierać wartość https://jwt.ms.

  3. Wybierz opcję Uruchom teraz.

    Powinien zostać wyświetlony kod podobny do poniższego przykładu:

    Decoded token in jwt.ms with idp_access_token block highlighted

Przekazywanie tokenu odświeżania dostawcy tożsamości (opcjonalnie)

Token dostępu zwracany przez dostawcę tożsamości jest ważny przez krótki czas. Niektórzy dostawcy tożsamości wystawiają również token odświeżania wraz z tokenem dostępu. Aplikacja kliencka może następnie w razie potrzeby wymienić token odświeżania dostawcy tożsamości dla nowego tokenu dostępu.

Niestandardowe zasady usługi Azure AD B2C obsługują przekazywanie tokenu odświeżania dostawców tożsamości OAuth 2.0, w tym serwisów Facebook, Google i GitHub.

Aby przekazać token odświeżania dostawcy tożsamości, wykonaj następujące kroki:

  1. Otwórz plik TrustframeworkExtensions.xml i dodaj następujący element ClaimType z identyfikatorem identityProviderRefreshToken elementu ClaimsSchema.

    <ClaimType Id="identityProviderRefreshToken">
        <DisplayName>Identity provider refresh token</DisplayName>
        <DataType>string</DataType>
    </ClaimType>
    
  2. Dodaj element OutputClaim do elementu TechnicalProfile dla każdego dostawcy tożsamości OAuth 2.0, dla którego chcesz odświeżyć token. W poniższym przykładzie pokazano element dodany do profilu technicznego serwisu Facebook:

    <ClaimsProvider>
      <DisplayName>Facebook</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Facebook-OAUTH">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="{oauth2:refresh_token}" />
          </OutputClaims>
          ...
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. Niektórzy dostawcy tożsamości wymagają uwzględnienia metadanych lub zakresów w profilu technicznym dostawcy tożsamości.

    • W przypadku dostawcy tożsamości Google dodaj dwa typy access_type oświadczeń i prompt. Następnie dodaj następujące oświadczenia wejściowe do profilu technicznego dostawcy tożsamości:

      <InputClaims>
          <InputClaim ClaimTypeReferenceId="access_type" PartnerClaimType="access_type" DefaultValue="offline" AlwaysUseDefaultValue="true" />
      
          <!-- The refresh_token is return only on the first authorization for a given user. Subsequent authorization request doesn't return the refresh_token.
              To fix this issue we add the prompt=consent query string parameter to the authorization request-->
          <InputClaim ClaimTypeReferenceId="prompt" PartnerClaimType="prompt" DefaultValue="consent" AlwaysUseDefaultValue="true" />
      </InputClaims>
      
    • Inni dostawcy tożsamości mogą mieć różne metody wystawiania tokenu odświeżania. Postępuj zgodnie z odbiorcami dostawcy tożsamości i dodaj niezbędne elementy do profilu technicznego dostawcy tożsamości.

  4. Zapisz zmiany wprowadzone w pliku TrustframeworkExtensions.xml .

  5. Otwórz plik zasad jednostki uzależnionej, taki jak SignUpOrSignIn.xml, i dodaj element OutputClaim do pliku TechnicalProfile:

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="idp_refresh_token"/>
        </OutputClaims>
        ...
      </TechnicalProfile>
    </RelyingParty>
    
  6. Zapisz zmiany wprowadzone w pliku zasad jednostki uzależnionej.

  7. Przekaż plik TrustframeworkExtensions.xml, a następnie plik zasad jednostki uzależnionej.

  8. Testowanie zasad

Następne kroki

Dowiedz się więcej na temat przeglądu tokenów usługi Azure AD B2C.