Passar um token de acesso do provedor de identidade para seu aplicativo no Azure Ative Directory B2C

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

Um fluxo de usuário no Azure Ative Directory B2C (Azure AD B2C) oferece aos usuários do seu aplicativo a oportunidade de se inscrever ou entrar com um provedor de identidade. Quando a jornada começa, o Azure AD B2C recebe um token de acesso do provedor de identidade. O Azure AD B2C usa esse token para recuperar informações sobre o usuário. Você habilita uma declaração em seu fluxo de usuário para passar o token para os aplicativos registrados no Azure AD B2C.

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

O Azure AD B2C dá suporte à 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 de provedores de identidade.

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

Identity provider pass through flow

Pré-requisitos

Ativar a declaração

  1. Inicie sessão no portal do Azure como administrador global do inquilino do Azure AD B2C.

  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para seu locatário do Azure AD 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, em seguida, selecione seu fluxo de usuário. Por exemplo, B2C_1_signupsignin1.

  5. Selecione Afirmações de aplicação.

  6. Habilite a declaração de Token de Acesso do Provedor de Identidade .

    Enable the Identity Provider Access Token claim

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

Testar o fluxo do usuário

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

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

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

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

    Você deve ver algo semelhante ao exemplo a seguir:

    Decoded token in jwt.ms with idp_access_token block highlighted

Adicionar os elementos de declaração

  1. Abra o arquivo TrustframeworkExtensions.xml e adicione o seguinte elemento ClaimType com um identificador de identityProviderAccessToken ao 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 OAuth 2.0 para o qual você deseja 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 arquivo.

  4. Abra seu arquivo de política de terceira parte confiável, como SignUpOrSignIn.xml, e adicione o elemento OutputClaim ao TechnicalProfile:

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

Testar a política

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

Carregar os ficheiros

  1. Inicie sessão 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 seu locatário do Azure AD B2C no menu Diretórios + assinaturas .
  3. Escolha Todos os serviços no canto superior esquerdo do portal do Azure e, em seguida, procure e selecione Azure AD B2C.
  4. Selecione Identity Experience Framework.
  5. Na página Políticas Personalizadas, clique em Carregar Política.
  6. Selecione Substituir a política, se ela existir, e procure e selecione o arquivo TrustframeworkExtensions.xml .
  7. Selecione 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. Em Aplicativo, selecione o aplicativo que você registrou anteriormente. Para ver o token no exemplo abaixo, o URL de resposta deve mostrar https://jwt.ms.

  3. Selecione Executar agora.

    Você deve ver algo semelhante ao exemplo a seguir:

    Decoded token in jwt.ms with idp_access_token block highlighted

Passar 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 então trocar o token de atualização do provedor de identidade por um novo token de acesso quando necessário.

A política personalizada do Azure AD B2C dá suporte à passagem do token de atualização dos provedores de identidade OAuth 2.0, que inclui Facebook, Google e GitHub.

Para passar o token de atualização do provedor de identidade, siga estas etapas:

  1. Abra o 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 para o qual você deseja o token de atualização. 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 access_type de declaração 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 feitas no arquivo TrustframeworkExtensions.xml arquivo.

  5. Abra seu arquivo de política de terceira parte confiável, como SignUpOrSignIn.xml, e adicione o elemento OutputClaim ao TechnicalProfile:

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

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

  8. Teste a sua política

Próximos passos

Saiba mais na visão geral dos tokens B2C do Azure AD.