Tutorial: Configurar o BioCatch com o Azure Active Directory B2C
Saiba como integrar a autenticação do Azure Active Directory B2C (Azure AD B2C) com a tecnologia BioCatch para aumentar a postura de segurança CIAM (Customer Identity and Access Management). Os produtos BioCatch analisam os comportamentos digitais físicos e cognitivos dos utilizadores para obter informações que ajudam a distinguir clientes legítimos.
Aceda a biocatch.com para saber mais sobre o BioCatch
Pré-requisitos
Para começar, precisa do seguinte:
- Uma subscrição do Azure
- Se não tiver uma, obtenha uma conta gratuita do Azure
- Um inquilino Azure AD B2C associado à subscrição do Azure
- Aceda à página biocatch.com Contacte-nos para pedir uma conta
- Mencionar Azure AD integração do B2C
Descrição do cenário
A integração do BioCatch inclui os seguintes componentes:
-
Uma aplicação Web ou serviço Web – os utilizadores navegam para este serviço Web que instancia um ID de sessão de cliente exclusivo que vai para o BioCatch
- O ID da sessão transmite características de comportamento do utilizador para o BioCatch
- Um método – envia o ID da sessão para Azure AD B2C. No exemplo, JavaScript introduz o valor num campo HTML oculto.
- Uma Azure AD IU personalizada do B2C – oculta um campo HTML para a entrada de ID de sessão do JavaScript
-
Azure AD política personalizada B2C:
- Assume o ID da sessão como uma afirmação através de um perfil técnico auto-afirmado
- Integra-se com o BioCatch através de um fornecedor de afirmações da API REST e transmite o ID da sessão para o BioCatch
- Várias afirmações personalizadas são devolvidas do BioCatch para a lógica de política personalizada
- Um percurso do utilizador avalia uma afirmação devolvida e executa uma ação condicional, como a autenticação multifator
Saiba mais:
- descrição geral da política personalizada do Azure AD B2C
- Tutorial: Criar fluxos de utilizador e políticas personalizadas no Azure AD B2C
O diagrama seguinte ilustra os fluxos de utilizador com informações de sessão.
- O utilizador navega para o serviço Web, que devolve valores HTML, CSS ou JavaScript e, em seguida, carrega o SDK JavaScript do BioCatch. O JavaScript do lado do cliente configura um ID de sessão de cliente para o SDK do BioCatch. Em alternativa, o serviço Web pré-configura o ID de sessão do cliente e envia-o para o cliente. Pode configurar o SDK JavaScript do BioCatch instanciado para BioCatch, que envia o comportamento do utilizador para o BioCatch a partir do dispositivo cliente, com o ID de sessão do cliente.
- O utilizador inscreve-se ou inicia sessão e é redirecionado para Azure AD B2C.
- O percurso do utilizador inclui um fornecedor de afirmações auto-afirmado, que introduz o ID da sessão do cliente. Este campo está oculto. Utilize JavaScript para introduzir o ID da sessão no campo . Selecione Seguinte para continuar a inscrição ou início de sessão. O ID da sessão vai para o BioCatch para obter uma classificação de risco. O BioCatch devolve informações de sessão e recomenda permitir ou bloquear. O percurso do utilizador tem uma verificação condicional, que atua sobre as afirmações devolvidas.
- Com base no resultado da verificação condicional, é invocada uma ação.
- O serviço Web pode utilizar o ID de sessão para consultar a API do BioCatch para determinar as informações de risco e de sessão.
Introdução ao BioCatch
Aceda à página biocatch.com Contacte-nos para iniciar uma conta.
Configurar a IU personalizada
Recomendamos que oculte o campo ID da Sessão do Cliente com CSS, JavaScript ou outro método. Para fins de teste, mostrar o campo. Por exemplo, JavaScript oculta o campo de entrada como:
document.getElementById("clientSessionId").style.display = 'none';
Configurar Azure AD políticas do B2C Identity Experience Framework
Para começar, veja Tutorial: Criar fluxos de utilizador e políticas personalizadas no Azure AD B2C.
Crie um novo ficheiro que herda do ficheiro de extensões.
<BasePolicy> <TenantId>tenant.onmicrosoft.com</TenantId> <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId> </BasePolicy>
Crie uma referência à IU 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 seguintes afirmações.
<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 fornecedor de afirmações auto-afirmado para o campo 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 fornecedor de afirmaçõ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>
Nota
O BioCatch fornece o URL, o ID do cliente e o ID de utilizador exclusivo (UUID). A afirmação SessionID do cliente passa como um parâmetro de cadeia de consulta para o BioCatch. Pode selecionar o tipo de atividade, por exemplo , MAKE_PAYMENT.
Configure o percurso do utilizador com o seguinte exemplo:
- Obtenha o clientSessionID como uma afirmação.
- Chame a API do BioCatch para obter as informações da sessão.
- Se o risco de afirmação devolvido for baixo, ignore o passo da MFA, caso contrário, aplique a MFA do utilizador.
<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 entidade confiadora (opcional). Pode transmitir as informações devolvidas pelo BioCatch à sua aplicação como afirmações no token: nível de risco e classificaçã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 com o Azure AD B2C
Adicione os ficheiros de política ao Azure AD B2C. Para obter as seguintes instruções, utilize o diretório com o inquilino Azure AD B2C.
- Inicie sessão no portal do Azure como Administrador Global do inquilino Azure AD B2C.
- Na barra de ferramentas do portal, selecione Diretórios + subscrições.
- Na página Definições do portal, Diretórios + subscrições, na lista Nome do diretório, localize o diretório Azure AD B2C.
- Selecione Mudar.
- No canto superior esquerdo do portal do Azure, selecione Todos os serviços.
- Procure e selecione Azure AD B2C.
- Navegue para Azure AD B2C>Identity Experience Framework.
- Carregue os ficheiros de política para o inquilino.
Testar a solução
Para obter as seguintes instruções, veja Tutorial: Registar uma aplicação Web no Azure Active Directory B2C
Registar uma aplicação fictícia que redireciona para JWT.MS.
Em Identity Experience Framework, selecione a política que criou.
Na janela de política, selecione a aplicação fictícia JWT.MS
Selecione Executar agora.
Execute um fluxo de inscrição e crie uma conta.
O token devolvido ao JWT.MS tem afirmações de 2x para riskLevel e pontuação.
Utilize o seguinte exemplo.
{ "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]