Tutorial para configurar TypingDNA con Azure Active Directory B2C
En este tutorial, aprenderá a integrar una aplicación de pago en línea de ejemplo en Azure Active Directory B2C con la aplicación TypingDNA. Mediante el uso de la aplicación TypingDNA, los clientes de Azure AD B2C pueden cumplir los requisitos para las transacciones de la Directiva de servicios de pago 2 (PSD2) a través de una dinámica de pulsaciones de teclas y la sólida autenticación del cliente. Obtenga más información sobre TypingDNA aquí.
Azure AD B2C usa las tecnologías de TypingDNA para capturar las características de escritura de los usuarios, y luego grabarlas y analizarlas para familiarizarse con cada autenticación. De este modo se agrega una capa de protección frente a los riesgos de una autenticación y se evalúan sus niveles. Azure AD B2C puede recurrir a otros mecanismos para aumentar la confianza de que el usuario es quien dice ser: invocar la autenticación multifactor de Microsoft Entra, forzar la verificación del correo electrónico o cualquier otra lógica personalizada para el escenario.
Nota
Esta directiva de ejemplo se basa en el paquete de inicio SocialAndLocalAccountsWithMfa.
Las páginas de Azure AD B2C usan la biblioteca JavaScript de TypingDNA para grabar el patrón de escritura del usuario. Por ejemplo, el nombre de usuario y la contraseña se graban al realizar el registro en la inscripción inicial y luego en cada inicio de sesión para la comprobación.
Cuando el usuario envía la página, la biblioteca de TypingDNA procesará las características de la escritura del usuario. Después, inserte la información en un campo de texto oculto que Azure AD B2C ha representado. Este campo se oculta con CSS.
El ejemplo contiene archivos HTML con las modificaciones de JavaScript y CSS, y se hace referencia a ellos en las definiciones de contenido de
api.selfasserted.tdnasignin
yapi.selfasserted.tdnasignup
. Consulte Hospedaje del contenido de la página para hospedar los archivos HTML.Azure AD B2C tiene ahora el patrón de escritura en el contenedor de notificaciones cuando el usuario envía sus credenciales. Debe llamar a una API (suya) para pasar estos datos al punto de conexión de la API de REST de TypingDNA. Esta API se incluye en el ejemplo (typingDNA-API-Interface).
A continuación, la API de capa intermedia pasa los datos del patrón de escritura a la API de REST de TypingDNA. Al registrarse, se llama al punto de conexión de comprobar usuario para confirmar que el usuario no existe y, a continuación, se llama al punto de conexión de guardar patrón para guardar el primer patrón de escritura del usuario.
Nota
Todas las llamadas a puntos de conexión de la API de REST de TypingDNA envían un elemento UserId. Debe ser un valor con hash. Azure AD B2C usa la transformación de notificaciones de HashObjectIdWithEmail
para aplicar un algoritmo hash al correo electrónico con sal y secreto aleatorios.
Las llamadas a la API de REST se modelan con validationTechnicalProfiles
dentro de LocalAccountSignUpWithLogonEmail-TDNA
:
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail-TDNA" />
<ValidationTechnicalProfile ReferenceId="REST-TDNA-CheckUser" ContinueOnError="true"/>
<ValidationTechnicalProfile ReferenceId="REST-TDNA-SaveUser"/>
</ValidationTechnicalProfiles>
En los inicios de sesión posteriores, el patrón de escritura del usuario se procesa de la misma manera que al registrarse con HTML personalizado. Una vez que el perfil de escritura se encuentra dentro del contenedor de notificaciones de Azure AD B2C, Azure AD B2C llamará a la API para llamar al punto de conexión de la API REST de TypingDNA. Se llama al punto de conexión de comprobar usuario para confirmar que el usuario existe. Después, se llama al punto de conexión de comprobar patrón para devolver el elemento net_score
. Este elemento net_score
es una indicación de la proximidad del patrón de escritura al registro original.
Este patrón de escritura se modela con validationTechnicalProfiles
dentro de SelfAsserted-LocalAccountSignin-Email-TDNA
:
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="login-NonInteractive"/>
<ValidationTechnicalProfile ReferenceId="REST-TDNA-CheckUser" ContinueOnError="false"/>
<ValidationTechnicalProfile ReferenceId="REST-TDNA-VerifyUser"/>
<ValidationTechnicalProfile ReferenceId="REST-TDNA-SaveUser">
<Preconditions>
<Precondition Type="ClaimEquals" ExecuteActionsIf="true">
<Value>saveTypingPattern</Value>
<Value>False</Value>
<Action>SkipThisValidationTechnicalProfile</Action>
</Precondition>
</Preconditions>
</ValidationTechnicalProfile>
</ValidationTechnicalProfiles>
Si el usuario obtiene un patrón de escritura con un valor alto de net_score
, puede guardarlo mediante el punto de conexión de guardar patrón de escritura.
La API debe devolver una notificación saveTypingPattern
si quiere que el punto de conexión de guardar patrón de escritura de TypingDNA se llame mediante Azure AD B2C (a través de la API).
El ejemplo del repositorio contiene una API (TypingDNA-API-Interface) que está configurada con las siguientes propiedades.
Modo de entrenamiento: si el usuario tiene menos de dos patrones guardados, solicitar siempre MFA.
Si el usuario tiene de 2 a 5 patrones guardados y el valor de
net_score
es inferior a 50, solicitar MFA.Si el usuario tiene más de 5 patrones guardados y el valor de
net_score
es inferior a 65, solicitar MFA.
Estos umbrales deben ajustarse al caso de uso.
Una vez que la API haya evaluado el elemento
net_score
, debe devolver una notificación booleana a B2C,promptMFA
.La notificación
promptMFA
se usa dentro de una condición previa para ejecutar de forma condicional la autenticación multifactor de Microsoft Entra.
<OrchestrationStep Order="3" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>isActiveMFASession</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
<Precondition Type="ClaimEquals" ExecuteActionsIf="true">
<Value>promptMFA</Value>
<Value>False</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="PhoneFactor-Verify" TechnicalProfileReferenceId="PhoneFactor-InputOrVerify" />
</ClaimsExchanges>
</OrchestrationStep>
- Regístrese en TypingDNA aquí
- Inicie sesión en el panel de TypingDNA y obtenga la clave de API y el secreto de API. Se necesitarán en la configuración de la interfaz de API más adelante.
Hospede TypingDNA-API-Interface en el proveedor de hospedaje que prefiera.
Reemplace todas las instancias de
apiKey
yapiSecret
en la solución TypingDNA-API-Interface por las credenciales del panel de TypingDNA.Hospede los archivos HTML en el proveedor que prefiera siguiendo los requisitos de CORS aquí
Reemplace los elementos LoadURI de las definiciones de contenido
api.selfasserted.tdnasignup
yapi.selfasserted.tdnasignin
en el archivoTrustFrameworkExtensions.xml
por el URI de los archivos HTML hospedados, respectivamente.Cree una clave de directiva B2C en el marco de la experiencia de identidad en la hoja de Microsoft Entra de Azure Portal. Use la opción
Generate
y asigne a esta clave el nombretdnaHashedId
.Reemplazo de TenantId en los archivos de directiva
Reemplace los elementos ServiceURL en todos los perfiles técnicos de la API de REST de TypingDNA (REST-TDNA-VerifyUser, REST-TDNA-SaveUser, REST-TDNA-CheckUser) por el punto de conexión de la API TypingDNA-API-Interface.
Cargue los archivos de directiva en el inquilino.
Abra el inquilino de B2C y elija el marco de la experiencia de identidad.
Seleccione el flujo de usuario que creó anteriormente.
Seleccione Ejecutar el flujo de usuario.
a. Aplicación: seleccione la aplicación registrada (en el ejemplo es JWT).
b. URL de respuesta: seleccione la dirección URL de redireccionamiento.
c. Seleccione Ejecutar flujo de usuario.
Recorra el flujo de registro y cree una cuenta.
Cerrar sesión
Recorra el flujo de inicio de sesión.
El JWT resultante mostrará los resultados de TypingDNA.
• MFA se ha deshabilitado en esta versión de prueba, pero puede ver el resultado de si se hubiera solicitado MFA por la notificación promptMFA
después de la autenticación.
• Regístrese aquí e inicie sesión aquí.
Para más información, consulte los artículos siguientes: