Tutorial: configurar o BioCatch com o Azure Active Directory B2C
Saiba como integrar a autenticação do Azure AD B2C (Azure Active Directory B2C) com a tecnologia BioCatch para ampliar sua postura de segurança de CIAM (identidade do cliente e gerenciamento de acesso). Os produtos BioCatch analisam comportamentos digitais físicos e cognitivos do usuário para obter insights que ajudam a distinguir clientes legítimos.
Acesse biocatch.com para saber mais sobre o BioCatch
Pré-requisitos
Para começar, você precisa do seguinte:
- Uma assinatura do Azure
- Se não tiver uma, obtenha uma conta gratuita do Azure
- Um locatário do Azure AD B2C vinculado à assinatura do Azure.
- Acesse a página biocatch.com Fale conosco para solicitar uma conta
- Mencione a integração do Azure AD B2C
Descrição do cenário
A integração do BioCatch inclui os seguintes componentes:
-
Um aplicativo Web ou serviço Web – os usuários navegam para esse serviço Web que cria uma instância de uma ID da sessão de cliente exclusiva que vai para o BioCatch
- A ID da sessão transmite características de comportamento do usuário para o BioCatch
- Um método – envia a ID da sessão para o Azure AD B2C. No exemplo, o JavaScript insere o valor em um campo HTML oculto.
- Uma interface do usuário personalizada do Azure AD B2C – oculta um campo HTML para a entrada da ID de sessão do JavaScript
-
Política personalizada do Azure AD B2C:
- Usa a ID da sessão como uma declaração por meio de um perfil técnico autodeclarado
- Integra-se com o BioCatch por meio de um provedor de declarações da API REST e passa a ID da sessão para o BioCatch
- Várias declarações personalizadas retornam do BioCatch para a lógica de política personalizada
- Um percurso do usuário avalia uma declaração retornada e executa uma ação condicional, como a autenticação multifator
Saiba mais:
- Visão geral da política personalizada do Azure AD B2C
- Tutorial: Criar fluxos dos usuários e políticas personalizadas no Azure Active Directory B2C
O diagrama a seguir ilustra os fluxos do usuário com informações de sessão.
- O usuário navega até o serviço Web, que retorna valores HTML, CSS ou JavaScript, e carrega o SDK do JavaScript do BioCatch. O JavaScript do lado do cliente configura uma ID da sessão do cliente para o SDK do BioCatch. Como alternativa, o serviço Web pré-configura a ID da sessão do cliente e a envia ao cliente. Configure o SDK do JavaScript do BioCatch instanciado para BioCatch, que envia o comportamento do usuário para o BioCatch do dispositivo cliente, por meio da ID da sessão do cliente.
- O usuário se inscreve ou entra e é redirecionado ao Azure AD B2C.
- O percurso do usuário inclui um provedor de declarações autodeclaradas, que insere a ID da sessão do cliente. Este campo está oculto. Usar JavaScript para inserir a ID da sessão no campo. Selecione Avançar, para continuar a inscrição ou entrada. A ID da sessão vai para o BioCatch para obter uma pontuação de risco. O BioCatch retorna informações da sessão e recomenda permitir ou bloquear. O percurso do usuário possui uma verificação condicional, que atua com base nas declarações retornadas.
- Com base no resultado da verificação condicional, uma ação é invocada.
- O serviço Web pode usar a ID da sessão para consultar a API do BioCatch para determinar informações de risco e sessão.
Introdução ao BioCatch
Acesse a página biocatch.com Fale conosco para iniciar uma conta.
Configurar a interface do usuário personalizada
É recomendável ocultar o campo ID da Sessão do Cliente com CSS, JavaScript ou outro método. Para testar, exiba novamente o campo. Por exemplo, o JavaScript oculta o campo de entrada como:
document.getElementById("clientSessionId").style.display = 'none';
Configurar políticas do Identity Experience Framework do Azure AD B2C
Para começar, consulte Tutorial: criar fluxos de usuários e políticas personalizadas no Azure AD B2C.
Crie um arquivo herdado do arquivo de extensões.
<BasePolicy> <TenantId>tenant.onmicrosoft.com</TenantId> <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId> </BasePolicy>
Crie uma referência à interface do usuário personalizada para ocultar a caixa de entrada, no recurso BuildingBlocks.
<ContentDefinitions> <ContentDefinition Id="api.selfasserted"> <LoadUri>https://domain.com/path/to/selfAsserted.cshtml</LoadUri> <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:2.1.0</DataUri> </ContentDefinition> </ContentDefinitions>
No recurso BuildingBlocks, adicione as declarações a seguir.
<ClaimsSchema> <ClaimType Id="riskLevel"> <DisplayName>Session risk level</DisplayName> <DataType>string</DataType> </ClaimType> <ClaimType Id="score"> <DisplayName>Session risk score</DisplayName> <DataType>int</DataType> </ClaimType> <ClaimType Id="clientSessionId"> <DisplayName>The ID of the client session</DisplayName> <DataType>string</DataType> <UserInputType>TextBox</UserInputType> </ClaimType> </ClaimsSchema>
Configure um provedor de declarações autodeclarado para o campo da ID da sessão do cliente.
<ClaimsProvider> <DisplayName>Client Session ID Claims Provider</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="login-NonInteractive-clientSessionId"> <DisplayName>Client Session ID TP</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <Metadata> <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item> </Metadata> <CryptographicKeys> <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" /> </CryptographicKeys> <!—Claim we created earlier --> <OutputClaims> <OutputClaim ClaimTypeReferenceId="clientSessionId" Required="false" DefaultValue="100"/> </OutputClaims> <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
Configure um provedor de declarações da API REST para o BioCatch.
<TechnicalProfile Id="BioCatch-API-GETSCORE"> <DisplayName>Technical profile for BioCatch API to return session information</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <Metadata> <Item Key="ServiceUrl">https://biocatch-url.com/api/v6/score?customerID=<customerid>&action=getScore&uuid=<uuid>&customerSessionID={clientSessionId}&solution=ATO&activtyType=<activity_type>&brand=<brand></Item> <Item Key="SendClaimsIn">Url</Item> <Item Key="IncludeClaimResolvingInClaimsHandling">true</Item> <!-- Set AuthenticationType to Basic or ClientCertificate in production environments --> <Item Key="AuthenticationType">None</Item> <!-- REMOVE the following line in production environments --> <Item Key="AllowInsecureAuthInProduction">true</Item> </Metadata> <InputClaims> <InputClaim ClaimTypeReferenceId="clientsessionId" /> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="riskLevel" /> <OutputClaim ClaimTypeReferenceId="score" /> </OutputClaims> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> </TechnicalProfile> </TechnicalProfiles>
Observação
O BioCatch fornece a URL, a ID do cliente e a UUID (ID de usuário exclusiva). A declaração SessionID do cliente passa como um parâmetro de cadeia de caracteres de consulta para o BioCatch. Selecione o tipo de atividade, por exemplo MAKE_PAYMENT.
Configure o percurso do usuário usando o seguinte exemplo:
- Obter a clientSessionID como uma declaração.
- Chamar a API do BioCatch para obter as informações da sessão.
- Se o risco de declaração retornado for baixo, ignore a etapa da MFA, caso contrário, imponha a MFA do usuário.
<OrchestrationStep Order="8" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="clientSessionIdInput" TechnicalProfileReferenceId="login-NonInteractive-clientSessionId" /> </ClaimsExchanges> </OrchestrationStep> <OrchestrationStep Order="9" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="BcGetScore" TechnicalProfileReferenceId=" BioCatch-API-GETSCORE" /> </ClaimsExchanges> </OrchestrationStep> <OrchestrationStep Order="10" Type="ClaimsExchange"> <Preconditions> <Precondition Type="ClaimEquals" ExecuteActionsIf="true"> <Value>riskLevel</Value> <Value>LOW</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> </Preconditions> <ClaimsExchanges> <ClaimsExchange Id="PhoneFactor-Verify" TechnicalProfileReferenceId="PhoneFactor-InputOrVerify" /> </ClaimsExchanges>
Configurar terceira parte confiável (opcional). Passe as informações retornadas do BioCatch para seu aplicativo como declarações no token: nível de risco e pontuação.
<RelyingParty> <DefaultUserJourney ReferenceId="SignUpOrSignInMfa" /> <UserJourneyBehaviors> <SingleSignOn Scope="Tenant" KeepAliveInDays="30" /> <SessionExpiryType>Absolute</SessionExpiryType> <SessionExpiryInSeconds>1200</SessionExpiryInSeconds> <ScriptExecution>Allow</ScriptExecution> </UserJourneyBehaviors> <TechnicalProfile Id="PolicyProfile"> <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="riskLevel" /> <OutputClaim ClaimTypeReferenceId="score" /> <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" /> </OutputClaims> <SubjectNamingInfo ClaimType="sub" /> </TechnicalProfile> </RelyingParty>
Integrar ao Azure AD B2C
Adicione os arquivos da política ao Azure AD B2C. Para obter as instruções a seguir, use o diretório com o locatário Azure AD B2C.
- Entre no portal do Azure como Administrador Global do locatário do Azure AD B2C.
- Na barra de ferramentas do portal, selecione Diretórios + assinaturas.
- Na página Configurações do portal, Diretórios + assinaturas, na lista Nome do diretório, localize o diretório Azure AD B2C.
- Selecione Alternar.
- No canto superior esquerdo do portal do Azure, selecione Todos os serviços.
- Pesquise e selecione Azure AD B2C.
- Navegue até o Azure AD B2C>Identity Experience Framework.
- Carregar os arquivos da política para o locatário.
Testar a solução
Para obter as instruções a seguir, consulte Tutorial: registrar um aplicativo Web no Azure Active Directory B2C
Registrar um aplicativo de simulação, que redirecione ao JWT.MS.
Na Identity Experience Framework, selecione a política criada.
Na janela da política, selecione o aplicativo JWT.MS de simulação
Selecione executar agora.
Conclua o fluxo de inscrição e crie uma conta.
O token retornado para o JWT.MS tem o dobro de declarações para nível de risco e pontuação.
Use o exemplo a seguir.
{ "typ": "JWT", "alg": "RS256", "kid": "_keyid" }.{ "exp": 1615872580, "nbf": 1615868980, "ver": "1.0", "iss": "https://tenant.b2clogin.com/12345678-1234-1234-1234-123456789012/v2.0/", "sub": "12345678-1234-1234-1234-123456789012", "aud": "12345678-1234-1234-1234-123456789012", "acr": "b2c_1a_signup_signin_biocatch_policy", "nonce": "defaultNonce", "iat": 1615868980, "auth_time": 1615868980, "name": "John Smith", "email": "john.smith@contoso.com", "given_name": "John", "family_name": "Smith", "riskLevel": "LOW", "score": 275, "tid": "12345678-1234-1234-1234-123456789012" }.[Signature]