Tutorial: Configuración Azure Active Directory B2C con BioCatch
Aprenda a integrar la autenticación de Azure Active Directory B2C (Azure AD B2C) con tecnología BioCatch para mejorar la posición de seguridad de la administración de identidades y acceso de clientes (CIAM). Los productos BioCatch analizan los comportamientos digitales cognitivos y físicos de los usuarios para obtener información que ayude a distinguir a los clientes legítimos.
Vaya a biocatch.com para obtener más información sobre BioCatch
Requisitos previos
Para empezar, necesitará lo siguiente:
- Una suscripción de Azure
- Si no tiene una, obtenga una cuenta gratuita de Azure.
- Un inquilino de Azure AD B2C vinculado a la suscripción de Azure
- Vaya a la página Póngase en contacto con nosotros de biocatch.com para solicitar una cuenta
- Mención de la integración de Azure AD B2C
Descripción del escenario
La integración de BioCatch incluye los siguientes componentes:
-
Una aplicación web o un servicio web: los usuarios navegan a este servicio web que crea una instancia de un identificador de sesión de cliente único que va a BioCatch
- El identificador de sesión transmitirá las características de comportamiento del usuario a BioCatch
- Un método: envía el identificador de sesión a Azure AD B2C. En el ejemplo, JavaScript introduce el valor en un campo HTML oculto.
- Una interfaz de usuario personalizada de Azure AD B2C: oculta un campo HTML para la entrada del identificador de sesión desde JavaScript
-
Directiva personalizada de Azure AD B2C:
- Toma el identificador de sesión como una notificación a través de un perfil técnico autoafirmado
- Se integra con BioCatch mediante un proveedor de notificaciones de API de REST y pasa el identificador de sesión a BioCatch
- Se devuelven varias notificaciones personalizadas desde BioCatch para la lógica de la directiva personalizada
- Un recorrido del usuario evalúa una notificación devuelta y ejecuta una acción condicional, como la autenticación multifactor
Más información:
- Información general sobre las directivas personalizadas de Azure AD B2C
- Tutorial: Creación de flujos de usuario y directivas personalizadas en Azure AD B2C
En el diagrama siguiente, se muestran los flujos de usuario con información de sesión.
- El usuario navega al servicio web, que devuelve valores HTML, CSS o JavaScript y, a continuación, carga el SDK de JavaScript de BioCatch. JavaScript del lado del cliente configura un identificador de sesión de cliente para el SDK de BioCatch. Como alternativa, el servicio web configurará previamente el identificador de sesión de cliente y lo enviará al cliente. Puede configurar el SDK de JavaScript de BioCatch de instancia creada para BioCatch, que envía el comportamiento del usuario a BioCatch desde el dispositivo cliente mediante el identificador de sesión de cliente.
- El usuario se registra o inicia sesión y se le redirige a Azure AD B2C.
- El recorrido del usuario incluye un proveedor de notificaciones autoafirmado, que introduce el identificador de sesión de cliente. Este campo está oculto. Use JavaScript para introducir el identificador de sesión en el campo. Seleccione Siguiente para continuar con el registro o el inicio de sesión. El identificador de sesión irá a BioCatch para obtener una puntuación de riesgo. BioCatch devuelve la información de sesión y recomienda permitir o bloquear. El recorrido del usuario tiene una comprobación condicional, que actúa sobre las notificaciones devueltas.
- En función del resultado de la comprobación condicional, se invoca una acción.
- El servicio web puede usar el identificador de sesión para consultar la API de BioCatch para determinar el riesgo y la información de sesión.
Introducción a BioCatch
Vaya a la página Póngase en contacto con nosotros de biocatch.com para iniciar una cuenta.
Configuración de la interfaz de usuario personalizada
Se recomienda ocultar el campo Id. de sesión de cliente con CSS, JavaScript u otro método. Para probar, muestre el campo. Por ejemplo, JavaScript oculta el campo de entrada como:
document.getElementById("clientSessionId").style.display = 'none';
Configuración de las directivas de Identity Experience Framework de Azure AD B2C
Para comenzar, consulte Tutorial: creación de flujos de usuario y directivas personalizadas en Azure AD B2C.
Cree un archivo que herede del archivo de extensiones.
<BasePolicy> <TenantId>tenant.onmicrosoft.com</TenantId> <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId> </BasePolicy>
Cree una referencia a la interfaz de usuario personalizada para ocultar el cuadro de entrada, en el 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>
En el recurso BuildingBlocks, agregue las siguientes notificaciones.
<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 un proveedor de notificaciones autoafirmado para el campo de identificador de sesión de 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 el proveedor de notificaciones de la API de REST para 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:
BioCatch proporcionará la dirección URL, el identificador de cliente y el identificador de usuario único (UUID). La notificación SessionID del cliente pasa como un parámetro de cadena de consulta a BioCatch. Puede seleccionar el tipo de actividad. Por ejemplo: MAKE_PAYMENT.
Configure el recorrido del usuario mediante el ejemplo siguiente:
- Obtenga el valor de clientSessionID como una notificación.
- Llame a la API de BioCatch para obtener la información de la sesión.
- Si el valor de riesgo de la notificación devuelta fuera low (bajo), omita el paso de MFA; de lo contrario, refuerce la autenticación multifactor para los usuarios.
<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>
Configure el usuario de confianza (opcional). Puede pasar la información devuelta por BioCatch a la aplicación como notificaciones en el token: riskLevel y puntuación.
<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>
Integración con Azure AD B2C
Agregue los archivos de directiva a Azure AD B2C. Para obtener las instrucciones siguientes, use el directorio con el inquilino de Azure AD B2C.
- Inicie sesión en Azure Portal como administrador global del inquilino de Azure AD B2C.
- Seleccione el icono Directorios y suscripciones en la barra de herramientas del portal.
- En la página Configuración del portal, directorios y suscripciones, en la lista Nombre del directorio, busque su directorio Azure AD B2C.
- Seleccione Cambiar.
- En la esquina superior izquierda de Azure Portal, seleccione Todos los servicios.
- Busque y seleccione Azure AD B2C.
- Vaya a Azure AD B2C>Identity Experience Framework.
- Cargue los archivos de directivas al inquilino.
Probar la solución
Para obtener las instrucciones siguientes, consulte Tutorial: registro de una aplicación web en Azure Active Directory B2C
Registre una aplicación ficticia que redirija a JWT.MS.
En Identity Experience Framework, seleccione la directiva que creó.
En la ventana de la directiva, seleccione la aplicación ficticia JWT.MS
Seleccione Ejecutar ahora.
Ejecute un flujo de registro y cree una cuenta.
El token devuelto a JWT.MS tendrá dos notificaciones para riskLevel y puntuación.
Use el ejemplo siguiente.
{ "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]