Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
A partir del 1 de mayo de 2025, Azure AD B2C ya no estará disponible para ser adquirido por nuevos clientes. Obtenga más información en nuestras preguntas más frecuentes.
Aprenda a integrar la autenticación de Azure Active Directory B2C (Azure AD B2C) con la tecnología BioCatch para aumentar la posición de seguridad de Administración de identidades y acceso de clientes (CIAM). Los productos BioCatch analizan comportamientos digitales físicos y cognitivos del usuario para obtener información que ayude a distinguir clientes legítimos.
Vaya a biocatch.com para obtener más información sobre BioCatch.
Prerrequisitos
Para empezar, necesita lo siguiente:
- Una suscripción a 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 biocatch.com Póngase en contacto con nosotros para solicitar una cuenta.
- Mencione 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 establece un identificador de sesión de cliente único que va a BioCatch.
- El identificador de sesión transmite 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 de 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 a través de un proveedor de notificaciones de la API 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 de usuario evalúa un reclamo devuelto y ejecuta una acción condicional, como la autenticación de múltiples factores.
Aprende más:
- Introducción a la directiva personalizada 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 cliente configura un identificador de sesión de cliente para el SDK de BioCatch. Como alternativa, el servicio web preconfigura el identificador de sesión de cliente y lo envía al cliente. Puede configurar el SDK de JavaScript de BioCatch instanciado, que envía el comportamiento del usuario a BioCatch desde el dispositivo cliente usando el identificador de sesión del cliente.
- El usuario se registra o inicia sesión y se 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 va a BioCatch para obtener una puntuación de riesgo. BioCatch devuelve 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 bioCatch API para determinar la información de riesgo y sesión.
Introducción a BioCatch
Vaya a la página biocatch.com Póngase en contacto con nosotros 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';
Configurar las directivas del Marco de Experiencia de Identidad de Azure AD B2C
Para empezar, consulte Tutorial: Creación de flujos de usuario y directivas personalizadas en Azure AD B2C.
Cree un nuevo 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 declaraciones.
<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 un proveedor de notificaciones de la API 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 proporciona 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 BioCatch API para obtener la información de la sesión.
- Si el riesgo de reclamación devuelto es bajo, omita el paso de MFA; de lo contrario, aplique MFA del usuario.
<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 de BioCatch a la aplicación como afirmaciones en el token: nivel de riesgo 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 seguir las siguientes instrucciones, use el directorio con el tenant de Azure AD B2C.
- Inicie sesión en Azure Portal como al menos el administrador de directivas de IEF de B2C del inquilino de Azure AD B2C.
- En la barra de herramientas del portal, seleccione Directorios y suscripciones.
- En la página Configuración del portal, Directorios y suscripciones , en la lista Nombre de directorio, busque el directorio de 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 el Marco de Experiencia de Identidad, seleccione la directiva que creó.
En la ventana de directiva, seleccione la aplicación ficticia JWT.MS
Seleccione Ejecutar ahora.
Realice 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": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "aud": "00001111-aaaa-2222-bbbb-3333cccc4444", "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": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" }.[Signature]