Configurar Transmit Security com Azure Active Directory B2C para autenticação sem senha

Neste tutorial de exemplo, aprenda a integrar a autenticação do Azure Active Directory B2C (Azure AD B2C) com a solução de autenticação sem senha BindID do Transmit Security. O BindID é um serviço de autenticação sem senha que usa a autenticação biométrica forte Fast Identity Online (FIDO2) para uma experiência confiável de autenticação omnicanal. A solução garante uma experiência de logon tranquila para todos os clientes em todos os dispositivos e canais, ao mesmo tempo em que reduz fraudes, phishing e reutilização de credenciais.

Descrição do cenário

O diagrama de arquitetura a seguir ilustra a implementação.

Diagrama da arquitetura do BindID e do Azure AD B2C.

  1. O usuário abre a página de entrada do Azure AD B2C e entra ou se inscreve com um nome de usuário.
  2. O Azure AD B2C redireciona o usuário para BindID usando uma solicitação OIDC (OpenID Connect).
  3. O BindID autentica o usuário usando biometria FIDO2 appless, como impressão digital.
  4. Uma resposta de autenticação descentralizada é retornada ao BindID.
  5. A resposta OIDC é passada para o Azure AD B2C.
  6. O usuário tem acesso concedido ou negado ao aplicativo do cliente com base nos resultados da verificação.

Pré-requisitos

Para começar, você precisa do seguinte:

Registrar um aplicativo no BindID

Introdução:

  1. Vá para developer.bindid.io para Configurar seu aplicativo.
  2. Adicione um aplicativo no Portal de Administração do BindID. É necessário fazer logon.
Propriedade Descrição
Nome Nome do aplicativo
Domínio Insira your-B2C-tenant-name.onmicrosoft.com. Substitua your-B2C-tenant pelo nome do seu locatário do Azure AD B2C.
URIs de redirecionamento https://jwt.ms/
URLs de redirecionamento Insira https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/oauth2/authresp. Substitua your-B2C-tenant pelo nome do seu locatário do Azure AD B2C. Se você usa um domínio personalizado, substitua your-B2C-tenant-name.b2clogin.com pelo seu domínio personalizado.
  1. Após o registro, uma ID do Cliente e o Segredo do Cliente são exibidos.
  2. Registre os valores a serem usados posteriormente.

Configurar o BindID como um provedor de identidade no Azure AD B2C

Para obter as instruções a seguir, use o diretório com o locatário do Azure AD B2C.

  1. Entre no Portal do Azure como Administrador Global.
  2. Na barra de ferramentas do portal, selecione Diretórios + assinaturas.
  3. Na página Configurações do portal | Diretórios + assinaturas, encontre o diretório do Azure AD B2C na lista Nome do diretório.
  4. Selecione Alternar.
  5. No canto superior esquerdo do portal do Azure, selecione Todos os serviços.
  6. Pesquise e selecione Azure AD B2C.
  7. Selecione Provedores de identidade.
  8. Selecione Novo provedor do OpenID Connect.
  9. Insira um Nome.
  10. Em URL de metadados, insira https://signin.bindid-sandbox.io/.well-known/openid-configuration.
  11. Para ID do Cliente, insira a ID do Cliente que você registrou.
  12. Para Segredo do Cliente , insira o Segredo do Cliente que você registrou.
  13. No Escopo, insira o openid email.
  14. Em Tipo de resposta, selecione code.
  15. Em Modo de resposta, selecione form_post.
  16. Em Mapeamento de declarações do provedor de identidade, para ID de Usuário, selecionesub.
  17. Para Email, selecione email.
  18. Clique em Salvar.

Criar um fluxo de usuário

  1. No locatário do Azure AD B2C, em Políticasselecione Fluxos de usuário.
  2. Selecione Novo fluxo de usuário.
  3. Selecione o tipo de fluxo de usuário Inscrever-se e entrar.
  4. Selecione Criar.
  5. Insira um Nome.
  6. Em Provedores de identidade, para Contas Locais, selecione Nenhum. Essa ação desabilita a autenticação por email e baseada em senha.
  7. Em Provedores de identidade personalizados, selecione seu provedor de identidade do BindID recém-criado, como Logon com BindID.
  8. Selecione Criar.

Testar o fluxo de usuário

  1. No locatário do Azure AD B2C, selecione Fluxos dos usuários.
  2. Selecione o fluxo de usuário recém-criado, como B2C_1_signupsignin.
  3. Para Aplicativo, selecione o aplicativo Web registrado na etapa 1. A URL de resposta é https://jwt.ms.
  4. Selecione Executar fluxo de usuário.
  5. O navegador é redirecionado para a página de entrada do BindID.
  6. Insira o email da conta registrada.
  7. O BindID autentica o usuário usando biometria FIDO2 sem aplicativo, como a impressão digital.
  8. O navegador é redirecionado para https://jwt.ms. O conteúdo aparece para o token retornado pelo Azure AD B2C.

Criar uma chave de política do BindID

Adicione o Segredo do Cliente do aplicativo BindID como uma chave de política: Para obter as instruções a seguir, use o diretório com o locatário do Azure AD B2C.

  1. Entre no portal do Azure.
  2. Na barra de ferramentas do portal, selecione Diretórios + assinaturas.
  3. Na página Configurações do portal | Diretórios + assinaturas, na lista Nome do diretório, localize o diretório do Azure AD B2C.
  4. Selecione Alternar.
  5. Na página de visão geral, em Políticas, selecione Identity Experience Framework.
  6. Selecione Chaves de Política.
  7. Selecione Adicionar.
  8. Em Opções selecione Manual.
  9. Insira um Nome. O prefixo B2C_1A_ acrescenta ao nome da chave.
  10. Em Segredo, insira o Segredo do Cliente que você anotou.
  11. Para Uso de chave, selecione Assinatura.
  12. Selecione Criar.

Configurar o BindID como um provedor de identidade

Para permitir que os usuários entrem usando o BindID, é necessário definir o BindID como um provedor de declarações com o qual o Azure AD B2C poderá se comunicar por meio de um ponto de extremidade. O ponto de extremidade fornece as declarações usadas pelo Azure AD B2C para verificar a autenticação do usuário com uma ID digital no seu dispositivo.

Adicionar o BindID como um provedor de declarações. Para iniciar, obtenha os pacotes de início de políticas personalizadas no GitHub. Em seguida, atualize os arquivos XML no pacote de início de SocialAndLocalAccounts com nome de seu locatário do Azure AD B2C.

  1. Abra a pasta zip active-directory-b2c-custom-policy-starterpack-main.zip ou clone o repositório:

        git clone https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack
    
  2. Em todos os arquivos do diretório LocalAccounts, substitua a cadeia de caracteres yourtenant pelo nome do locatário do Azure AD B2C.

  3. Abra o LocalAccounts/ TrustFrameworkExtensions.xml.

  4. Localize o elemento ClaimsProviders. Se ele não aparecer, adicione-o sob o elemento raiz.

  5. Adicione um novo ClaimsProvider semelhante ao exemplo a seguir:

     <ClaimsProvider>
         <Domain>signin.bindid-sandbox.io</Domain>
         <DisplayName>BindID</DisplayName>
         <TechnicalProfiles>
           <TechnicalProfile Id="BindID-OpenIdConnect">
             <DisplayName>BindID</DisplayName>
             <Protocol Name="OpenIdConnect" />
             <Metadata>
               <Item Key="METADATA">https://signin.bindid-sandbox.io/.well-known/openid-configuration</Item>
                <!-- Update the Client ID below to the BindID Application ID -->
               <Item Key="client_id">00000000-0000-0000-0000-000000000000</Item>
               <Item Key="response_types">code</Item>
               <Item Key="scope">openid email</Item>
               <Item Key="response_mode">form_post</Item>
               <Item Key="HttpBinding">POST</Item>
               <Item Key="UsePolicyInRedirectUri">false</Item>
               <Item Key="AccessTokenResponseFormat">json</Item>
             </Metadata>
             <CryptographicKeys>
               <Key Id="client_secret" StorageReferenceId="B2C_1A_BindIDClientSecret" />
             </CryptographicKeys>
             <OutputClaims>
               <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
               <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
               <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
               <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
             </OutputClaims>
             <OutputClaimsTransformations>
               <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
               <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
               <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
             </OutputClaimsTransformations>
             <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
           </TechnicalProfile>
         </TechnicalProfiles>
       </ClaimsProvider>    
    
  6. Defina o client_id com sua ID do Aplicativo BindID.

  7. Clique em Salvar.

Adicione um percurso de usuário

O provedor de identidade não está nas páginas de entrada. Se você tiver um percurso do usuário personalizado, avance para Adicionar o provedor de identidade a um percurso do usuário. Caso contrário, crie um percurso do usuário de modelo duplicado:

  1. No pacote de inicialização, abra o arquivo LocalAccounts/ TrustFrameworkBase.xml.
  2. Localize e copie todo o conteúdo do elemento UserJourney que inclui Id=SignUpOrSignIn.
  3. Abra o LocalAccounts/ TrustFrameworkExtensions.xml.
  4. Localize o elemento UserJourneys. Se não houver nenhum elemento, adicione um.
  5. Cole o conteúdo do elemento UserJourney como filho do elemento UserJourneys.
  6. Renomeie a ID do percurso do usuário.

Adicione o provedor de identidade a um percurso de usuário

Adicione o novo provedor de identidade ao percurso do usuário.

  1. No percurso de usuário, localize o elemento da etapa de orquestração que inclui Type=CombinedSignInAndSignUp ou Type=ClaimsProviderSelection. Normalmente é a primeira etapa de orquestração. O elemento ClaimsProviderSelections possui uma lista de provedores de identidade com os quais os usuários se conectam. A ordem dos elementos controla a ordem dos botões de entrada que o usuário vê.
  2. Adicione um elemento XML ClaimsProviderSelection.
  3. Defina o valor de TargetClaimsExchangeId com um nome amigável.
  4. Adicione um elemento ClaimsExchange.
  5. Defina a ID como o valor da ID de troca de declarações de destino. Essa ação vincula o botão BindID a BindID-SignIn.
  6. Atualize o valor TechnicalProfileReferenceId para a ID do perfil técnico criado por você.

O XML a seguir demonstra as 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="BindIDExchange" />
      </ClaimsProviderSelections>
      ...
    </OrchestrationStep>
    
    <OrchestrationStep Order="2" Type="ClaimsExchange">
      ...
      <ClaimsExchanges>
        <ClaimsExchange Id="BindIDExchange" TechnicalProfileReferenceId="BindID-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 o percurso do usuário que o Azure AD B2C executa. Você também pode controlar quais declarações são passadas para seu aplicativo, ajustando o elemento OutputClaims do elemento PolicyProfile TechnicalProfile. Neste exemplo, o aplicativo recebe os atributos do usuário, como nome de exibição, nome definido, sobrenome, email, objectId, provedor de identidade e tenantId.

Consulte Azure-Samples/active-directory-b2c-custom-policy-starterpack

  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignInWithBindID" />
    <TechnicalProfile Id="BindID-OpenIdConnect">
      <DisplayName>PolicyProfile</DisplayName>
      <Protocol Name="OpenIdConnect" />
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
        <OutputClaim ClaimTypeReferenceId="identityProvider" />
        <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>

Carregar a política personalizada

  1. Entre no portal do Azure.
  2. Na barra de ferramentas do portal, selecione Diretórios + assinaturas.
  3. Na página Configurações do portal | Diretórios + assinaturas, encontre o diretório do Azure AD B2C na lista Nome do diretório.
  4. Selecione Alternar.
  5. No portal do Azure, pesquise e selecione Azure AD B2C.
  6. Em Políticas, selecione Identity Experience Framework.
  7. Selecione Carregar Política Personalizada.
  8. Carregue os arquivos no pacote inicial LocalAccounts na seguinte ordem:
  • Política base, por exemplo TrustFrameworkBase.xml
  • Política de localização, por exemplo TrustFrameworkLocalization.xml
  • Política de extensão, por exemplo TrustFrameworkExtensions.xml
  • Política de terceira parte confiável, como SignUpOrSignIn.xml

Testar sua política personalizada

Para obter as instruções a seguir, use o diretório com o locatário do Azure AD B2C.

  1. Abra o locatário do Azure AD B2C e, em Políticas, selecione Identity Experience Framework.
  2. Na página Políticas personalizadas, selecione B2C_1A_signup_signin.
  3. Para Aplicativo, selecione o aplicativo Web registrado na etapa 1. A URL de resposta é https://jwt.ms.
  4. Selecione Executar Agora.
  5. O navegador é redirecionado para a página de entrada do BindID.
  6. Insira o email da conta registrada.
  7. O BindID autentica o usuário usando biometria FIDO2 sem aplicativo, como a impressão digital.
  8. O navegador é redirecionado para https://jwt.ms. O conteúdo do token retornado pelo Azure AD B2C é exibido.

Próximas etapas

Para obter informações adicionais, examine os seguintes artigos: