Configurar a inscrição e o início de sessão com o OpenID Connect genérico utilizando o 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.

O OpenID Connect é um protocolo de autenticação construído sobre o OAuth 2.0 que pode ser usado para login seguro do usuário. A maioria dos provedores de identidade que usam esse protocolo tem suporte no Azure AD B2C.

Este artigo explica como você pode adicionar provedores de identidade OpenID Connect personalizados aos seus fluxos de usuário.

Importante

Seus pontos de extremidade devem estar em conformidade com os requisitos de segurança do Azure AD B2C. Versões e cifras TLS mais antigas foram preteridas. Para obter mais informações, consulte Azure AD B2C TLS e requisitos do pacote de codificação.

Pré-requisitos

Adicionar o provedor de identidade

  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 Provedores de identidade e, em seguida, selecione Novo provedor OpenID Connect.
  5. Insira um Nome. Por exemplo, insira Contoso.

Defina o provedor de identidade OpenId Connect adicionando-o ao elemento ClaimsProviders no arquivo de extensão da sua política.

  1. Abra o TrustFrameworkExtensions.xml.

  2. Encontre o elemento ClaimsProviders . Se não existir, adicione-o sob o elemento raiz.

  3. Adicione um novo ClaimsProvider da seguinte maneira:

    <ClaimsProvider>
      <Domain>contoso.com</Domain>
      <DisplayName>Login with Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-OpenIdConnect">
          <DisplayName>Contoso</DisplayName>
          <Description>Login with your Contoso account</Description>
          <Protocol Name="OpenIdConnect"/>
          <Metadata>
            <Item Key="METADATA">https://your-identity-provider.com/.well-known/openid-configuration</Item>
            <Item Key="client_id">00000000-0000-0000-0000-000000000000</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid profile</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
          </Metadata>
          <!-- <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
          </CryptographicKeys> -->
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid"/>
            <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid"/>
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
            <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="oid"/>
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

Configurar o provedor de identidade

Cada provedor de identidade OpenID Connect descreve um documento de metadados que contém a maioria das informações necessárias para executar o login. O documento de metadados inclui informações como as URLs a serem usadas e o local das chaves de assinatura públicas do serviço. O documento de metadados do OpenID Connect está sempre localizado em um ponto de extremidade que termina em .well-known/openid-configuration. Para o provedor de identidade OpenID Connect que você deseja adicionar, insira sua URL de metadados.

Na URL de metadados, insira a URL do documento de metadados do OpenID Connect.

Nos metadados do <Item Key="METADATA"> perfil técnico, insira a URL do documento de metadados do OpenID Connect.

ID do cliente e segredo

Para permitir que os usuários entrem, o provedor de identidade exige que os desenvolvedores registrem um aplicativo em seu serviço. Este aplicativo tem uma ID que é referida como a ID do cliente e um segredo do cliente.

O segredo do cliente é opcional. No entanto, você deve fornecer um segredo do cliente se o tipo de resposta for code, que usa o segredo para trocar o código pelo token.

Para adicionar o ID do cliente e o segredo do cliente, copie esses valores do provedor de identidade e insira-os nos campos correspondentes.

Nos metadados do perfil técnico, insira o ID do <Item Key="client_id"> cliente.

Criar uma chave de política

Se o segredo do cliente for necessário, armazene o segredo do cliente que você registrou anteriormente em seu locatário do Azure AD B2C.

  1. Inicie sessão no portal do Azure.

  2. Verifique se você está usando o diretório que contém seu locatário do Azure AD B2C. Selecione o filtro Diretório + assinatura na barra de ferramentas do portal.

  3. Nas configurações do Portal | Página Diretórios + assinaturas , localize seu diretório do Azure AD B2C na lista Nome do diretório e selecione Alternar.

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

  5. Na página Visão geral, selecione Identity Experience Framework.

  6. Selecione Chaves de política e, em seguida, selecione Adicionar.

  7. Em Opções, escolha Manual.

  8. Insira um Nome para a chave de política. Por exemplo, ContosoSecret. O prefixo B2C_1A_ é adicionado automaticamente ao nome da sua chave.

  9. Em Segredo, insira o segredo do cliente que você gravou anteriormente.

  10. Para Uso da chave, selecione Signature.

  11. Clique em Criar.

  12. CryptographicKeys No elemento XML, adicione o seguinte elemento :

    <CryptographicKeys>
      <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
    </CryptographicKeys>
    

Scope

O escopo define as informações e permissões que você deseja coletar do seu provedor de identidade, por exemplo openid profile. Para receber o token de ID do provedor de identidade, o openid escopo deve ser especificado.

Sem o token de ID, os usuários não podem entrar no Azure AD B2C usando o provedor de identidade personalizado. Outros escopos podem ser acrescentados separados por espaço. Consulte a documentação do provedor de identidade personalizada para ver quais outros escopos podem estar disponíveis.

No Escopo, insira os escopos do provedor de identidade. Por exemplo, openid profile.

Nos metadados do perfil técnico, insira os escopos do <Item Key="scope"> provedor de identidade. Por exemplo, openid profile.

Tipo de resposta

O tipo de resposta descreve que tipo de informação é enviada de volta na chamada inicial para o authorization_endpoint provedor de identidade personalizada. Os seguintes tipos de resposta podem ser usados:

  • code: De acordo com o fluxo de código de autorização, um código será retornado ao Azure AD B2C. O Azure AD B2C continua a chamar o para trocar o token_endpoint código pelo token.
  • id_token: Um token de ID é retornado ao Azure AD B2C do provedor de identidade personalizado.

No Tipo de resposta, selecione code, ou id_token, de acordo com as configurações do seu provedor de identidade.

Nos metadados do perfil técnico, selecione code, ou id_token de acordo com as configurações do <Item Key="response_types"> seu provedor de identidade.

Modo de resposta

O modo de resposta define o método que deve ser usado para enviar os dados de volta do provedor de identidade personalizada para o Azure AD B2C. Os seguintes modos de resposta podem ser usados:

  • form_post: Este modo de resposta é recomendado para melhor segurança. A resposta é transmitida através do método HTTP POST , com o código ou token sendo codificado no corpo usando o application/x-www-form-urlencoded formato.
  • query: O código ou token é retornado como um parâmetro de consulta.

No modo de resposta, selecione form_post, ou query, de acordo com as configurações do seu provedor de identidade.

Nos metadados do perfil técnico, selecione form_post, ou query, de acordo com as configurações do <Item Key="response_mode"> seu provedor de identidade.

Dica de domínio

A dica de domínio pode ser usada para pular diretamente para a página de entrada do provedor de identidade especificado, em vez de fazer com que o usuário faça uma seleção entre a lista de provedores de identidade disponíveis.

Para permitir esse tipo de comportamento, insira um valor para a dica de domínio. Para ir para o provedor de identidade personalizado, acrescente o parâmetro domain_hint=<domain hint value> ao final da sua solicitação ao chamar o Azure AD B2C para entrar.

Na dica de domínio, insira um nome de domínio usado na dica de domínio.

No elemento XML do <Domain>contoso.com</Domain> perfil técnico, insira um nome de domínio usado na dica de domínio. Por exemplo, contoso.com.

Mapeamento de sinistros

Depois que o provedor de identidade personalizado envia um token de ID de volta para o Azure AD B2C, o Azure AD B2C precisa ser capaz de mapear as declarações do token recebido para as declarações que o Azure AD B2C reconhece e usa. Para cada um dos mapeamentos a seguir, consulte a documentação do provedor de identidade personalizado para entender as declarações que são retornadas nos tokens do provedor de identidade:

  • ID do usuário: insira a declaração que fornece o identificador exclusivo para o usuário conectado.
  • Nome para exibição: insira a declaração que fornece o nome para exibição ou o nome completo para o usuário.
  • Nome dado: insira a declaração que fornece o primeiro nome do usuário.
  • Sobrenome: insira a declaração que fornece o sobrenome do usuário.
  • E-mail: insira a declaração que fornece o endereço de e-mail do usuário.

O OutputClaims elemento contém uma lista de declarações retornadas pelo seu provedor de identidade. Mapeie o nome da declaração definida em sua política para o nome definido no provedor de identidade. Sob o elemento , configure o atributo com o <OutputClaims> PartnerClaimType nome da declaração correspondente, conforme definido pelo seu provedor de identidade.

ClaimTypeReferenceId PartnerClaimType
issuerUserId Insira a declaração que fornece o identificador exclusivo para o usuário conectado.
displayName Insira a declaração que fornece o nome para exibição ou o nome completo para o usuário.
givenName Insira a declaração que fornece o primeiro nome do usuário.
surName Insira a declaração que fornece o sobrenome do usuário.
email Insira a declaração que fornece o endereço de e-mail do usuário.
identityProvider Insira a declaração que fornece o nome do emissor do token. Por exemplo, iss. Se o provedor de identidade não incluir a declaração do emissor no token, defina o DefaultValue atributo com um identificador exclusivo do seu provedor de identidade. Por exemplo, DefaultValue="contoso.com".

Adicionar o provedor de identidade a um fluxo de usuário

  1. Em seu locatário do Azure AD B2C, selecione Fluxos de usuário.
  2. Clique no fluxo de usuário ao qual você deseja adicionar o provedor de identidade.
  3. Em Provedores de identidade social, selecione o provedor de identidade que você adicionou. Por exemplo, Contoso.
  4. Selecione Guardar.

Teste seu fluxo de usuários

  1. Para testar sua política, selecione Executar fluxo de usuário.
  2. Em Application, selecione o aplicativo Web chamado testapp1 que você registrou anteriormente. O URL de resposta deve mostrar https://jwt.ms.
  3. Selecione o botão Executar fluxo de usuário.
  4. Na página de inscrição ou entrada, selecione o provedor de identidade que você deseja entrar. Por exemplo, Contoso.

Se o processo de entrada for bem-sucedido, seu navegador será redirecionado para https://jwt.ms, que exibe o conteúdo do token retornado pelo Azure AD B2C.

Adicionar uma jornada do usuário

Neste ponto, o provedor de identidade foi configurado, mas ainda não está disponível em nenhuma das páginas de entrada. Se você não tiver sua própria jornada de usuário personalizada, crie uma duplicata de uma jornada de usuário de modelo existente, caso contrário, continue para a próxima etapa.

  1. Abra o arquivo TrustFrameworkBase.xml do pacote inicial.
  2. Localize e copie todo o conteúdo do elemento UserJourney que inclui Id="SignUpOrSignIn"o .
  3. Abra o TrustFrameworkExtensions.xml e localize o elemento UserJourneys. Se o elemento não existir, adicione um.
  4. Cole todo o conteúdo do elemento UserJourney que você copiou como filho do elemento UserJourneys .
  5. Renomeie o ID da jornada do usuário. Por exemplo, Id="CustomSignUpSignIn".

Adicionar o provedor de identidade a uma jornada do usuário

Agora que você tem uma jornada do usuário, adicione o novo provedor de identidade à jornada do usuário. Primeiro, adicione um botão de início de sessão e, em seguida, associe o botão a uma ação. A ação é o perfil técnico que você criou anteriormente.

  1. Encontre o elemento da etapa de orquestração que inclui Type="CombinedSignInAndSignUp"o , ou Type="ClaimsProviderSelection" na jornada do usuário. Geralmente é o primeiro passo da orquestração. O elemento ClaimsProviderSelections contém uma lista de provedores de identidade com os quais um usuário pode entrar. A ordem dos elementos controla a ordem dos botões de entrada apresentados ao usuário. Adicione um elemento XML ClaimsProviderSelection . Defina o valor de TargetClaimsExchangeId como um nome amigável.

  2. Na próxima etapa de orquestração, adicione um elemento ClaimsExchange . Defina o Id como o valor do ID de troca de declarações de destino. Atualize o valor de TechnicalProfileReferenceId para o Id do perfil técnico criado anteriormente.

O XML a seguir demonstra as duas primeiras etapas de orquestração de uma jornada do usuário com o provedor de identidade:

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="ContosoExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="Contoso-OpenIdConnect" />
  </ClaimsExchanges>
</OrchestrationStep>

Configurar a política de terceira parte confiável

A política de terceira parte confiável, por exemplo SignUpSignIn.xml, especifica a jornada do usuário que o Azure AD B2C executará. Encontre o elemento DefaultUserJourney na terceira parte confiável. Atualize o ReferenceId para corresponder ao ID de jornada do usuário, no qual você adicionou o provedor de identidade.

No exemplo a seguir, para a jornada do CustomSignUpSignIn usuário, o ReferenceId é definido como CustomSignUpSignIn:

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

Carregar a política personalizada

  1. Inicie sessão no portal do Azure.
  2. Selecione o ícone Diretório + Assinatura na barra de ferramentas do portal e selecione o diretório que contém seu locatário do Azure AD B2C.
  3. No portal do Azure, procure e selecione Azure AD B2C.
  4. Em Políticas, selecione Identity Experience Framework.
  5. Selecione Carregar Política Personalizada e, em seguida, carregue os dois ficheiros de política que alterou, pela seguinte ordem: a política de extensão, por exemplo TrustFrameworkExtensions.xml, e, em seguida, a política de entidade confiadora, como SignUpSignIn.xml.
  1. Selecione sua política de terceira parte confiável, por exemplo B2C_1A_signup_signin.
  2. Em Aplicativo, selecione um aplicativo Web que você registrou anteriormente. O URL de resposta deve mostrar https://jwt.ms.
  3. Selecione o botão Executar agora .
  4. Na página de inscrição ou login, selecione Contoso para entrar com a Conta do Google.

Se o processo de entrada for bem-sucedido, seu navegador será redirecionado para https://jwt.ms, que exibe o conteúdo do token retornado pelo Azure AD B2C.

Problemas Conhecidos

  • O Azure AD B2C não suporta JWE (JSON Web Encryption) para trocar tokens criptografados com provedores de identidade OpenID connect.

Próximos passos

Para obter mais informações, consulte o guia de referência do perfil técnico do OpenId Connect.