Transmitir um token de acesso do provedor de identidade para o aplicativo no Azure Active Directory B2C

Antes de começar, use o seletor Escolher um tipo de política para escolher o tipo de política que você está configurando. O Azure Active Directory B2C oferece dois métodos para definir como os usuários interagem com seus aplicativos: por meio de fluxos dos usuários predefinidos ou de políticas personalizadas totalmente configuráveis. As etapas necessárias neste artigo são diferentes para cada método.

Um fluxo de usuário no AAD B2C (Azure Active Directory B2C) fornece aos usuários do seu aplicativo uma oportunidade de se inscrever ou entrar com um provedor de identidade. Quando a jornada é iniciada, o Azure AD B2C recebe um token de acesso do provedor de identidade. O Azure Active Directory B2C usa esse token para recuperar informações sobre o usuário. Habilitar uma declaração no seu fluxo de usuário para passar o token por meio para os aplicativos que você se registrar no Azure AD B2C.

Atualmente, o AAD B2C dá suporte à transmissão do token de acesso dos provedores de identidade do OAuth 2.0, que incluem o Facebook e o Google. Para todos os outros provedores de identidade, a declaração é retornada em branco.

O Azure AD B2C é compatível com passagem do token de acesso dos provedores de identidade OAuth 2.0 e OpenID Connect. Para todos os outros provedores de identidade, a declaração é retornada em branco. Para obter mais detalhes, confira a Demonstração ao vivo da federação dos provedores de identidade.

O diagrama a seguir mostra como um token do provedor de identidade retorna o seu aplicativo:

Identity provider pass through flow

Pré-requisitos

Habilitar a declaração

  1. Entre no portal do Azure como administrador global do locatário Azure AD B2C.

  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para o seu locatário do Azure Active Directory B2C no menu Diretórios + assinaturas.

  3. Escolha Todos os serviços no canto superior esquerdo do portal do Azure, procure e selecione Azure AD B2C.

  4. Selecione Fluxos de usuário (políticas) e escolha o fluxo de usuário. Por exemplo, B2C_1_signupsignin1.

  5. Selecione Declarações do aplicativo.

  6. Habilite a declaração Token de acesso do provedor de identidade.

    Enable the Identity Provider Access Token claim

  7. Clique em Salvar para salvar o fluxo de usuário.

Testar o fluxo de usuário

Ao testar seus aplicativos no Azure AD B2C, pode ser útil ter o token do Azure AD B2C retornado ao https://jwt.ms para examinar as declarações.

  1. Na página de visão geral do fluxo de usuário, selecione Executar o fluxo de usuário.

  2. Para Aplicativo, selecione seu aplicativo que você registrou anteriormente. Para ver o token no exemplo a seguir, a URL de resposta deve mostrar https://jwt.ms.

  3. Clique em Executar o fluxo de usuário, e em seguida, entre com suas credenciais de conta. Você deve ver o token de acesso do provedor de identidade na declaração idp_access_token.

    Você deverá ver algo semelhante ao texto a seguir:

    Decoded token in jwt.ms with idp_access_token block highlighted

Adicione os elementos de declaração

  1. Abre seu arquivo TrustframeworkExtensions.xml e adicione o seguinte elemento ClaimType com um identificador de identityProviderAccessToken para o elemento 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. Adicione o elemento OutputClaim ao elemento TechnicalProfile para cada provedor de identidade do OAuth 2.0 que você gostaria de ter o token de acesso. O exemplo a seguir mostra o elemento adicionado ao perfil técnico do Facebook:

    <ClaimsProvider>
      <DisplayName>Facebook</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Facebook-OAUTH">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" />
          </OutputClaims>
          ...
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. Salve o arquivo TrustFrameworkExtensions.xml.

  4. Abra seu arquivo de política de terceira parte confiável, como Signuporsignine adicione o elemento OutputClaim para TechnicalProfile:

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="idp_access_token"/>
        </OutputClaims>
        ...
      </TechnicalProfile>
    </RelyingParty>
    
  5. Salve o arquivo da política.

Testar sua política

Ao testar seus aplicativos no Azure AD B2C, pode ser útil ter o token do Azure AD B2C retornado ao https://jwt.ms para poder examinar as declarações.

Fazer upload dos arquivos

  1. Entre no portal do Azure.
  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para o seu locatário do Azure Active Directory B2C no menu Diretórios + assinaturas.
  3. Escolha Todos os serviços no canto superior esquerdo do Portal do Azure, pesquise Azure AD B2C e selecione-o.
  4. Selecione Estrutura de Experiência de Identidade.
  5. Na página de políticas personalizadas, clique em Carregar Política.
  6. Habilite Substituir a política se ela existir e, em seguida, navegue até o arquivo TrustFrameworkExtensions.xml e selecione-o.
  7. Escolha Carregar.
  8. Repita as etapas 5 a 7 para o arquivo de terceira parte confiável, como SignUpOrSignIn.xml.

Executar a política

  1. Abra a política que você alterou. Por exemplo, B2C_1A_signup_signin.

  2. Para Aplicativo, selecione seu aplicativo que você registrou anteriormente. Para ver o token no exemplo a seguir, a URL de resposta deve mostrar https://jwt.ms.

  3. Selecione Executar Agora.

    Você deverá ver algo semelhante ao texto a seguir:

    Decoded token in jwt.ms with idp_access_token block highlighted

Aprovar o token de atualização do IDP (opcional)

O token de acesso que o provedor de identidade retorna é válido por um curto período de tempo. Alguns provedores de identidade também emitem um token de atualização junto com o token de acesso. Seu aplicativo cliente pode, em seguida, trocar esse token de atualização do provedor de identidade por um novo token de acesso sempre que necessário.

A política personalizada do Azure Active Directory B2C dá suporte à aprovação do token de atualização do OAuth 2.0, o que inclui o Facebook, o Google e o GitHub.

Para aprovar o token de atualização do provedor de identidade, siga essas etapas:

  1. Abra seu arquivo TrustframeworkExtensions.xml e adicione o seguinte elemento ClaimType com um identificador de identityProviderRefreshToken ao elemento ClaimsSchema.

    <ClaimType Id="identityProviderRefreshToken">
        <DisplayName>Identity provider refresh token</DisplayName>
        <DataType>string</DataType>
    </ClaimType>
    
  2. Adicione o elemento OutputClaim ao elemento TechnicalProfile para cada provedor de identidade OAuth 2.0 cujo token de acesso você gostaria de ter. O exemplo a seguir mostra o elemento adicionado ao perfil técnico do Facebook:

    <ClaimsProvider>
      <DisplayName>Facebook</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Facebook-OAUTH">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="{oauth2:refresh_token}" />
          </OutputClaims>
          ...
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  3. Alguns provedores de identidade exigem que você inclua metadados ou escopos no perfil técnico do provedor de identidade.

    • Para o provedor de identidade do Google, adicione dois tipos de declaração access_type e prompt. Em seguida, adicione as seguintes declarações de entrada ao perfil técnico do provedor de identidade:

      <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>
      
    • Outros provedores de identidade podem ter métodos diferentes para emitir um token de atualização. Siga o público do provedor de identidade e adicione os elementos necessários ao perfil técnico do provedor de identidade.

  4. Salve as alterações que você fez no seu arquivo TrustframeworkExtensions.xml.

  5. Abra seu arquivo de política de terceira parte confiável, como Signuporsignine adicione o elemento OutputClaim para TechnicalProfile:

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="idp_refresh_token"/>
        </OutputClaims>
        ...
      </TechnicalProfile>
    </RelyingParty>
    
  6. Salve as alterações que você fez no arquivo de política da terceira parte confiável da sua política.

  7. Carregue o arquivo TrustframeworkExtensions.xml e, em seguida, o arquivo de política da terceira parte confiável.

  8. Testar sua política

Próximas etapas

Saiba mais na visão geral de tokens do AAD B2C.