Validación de atributos recopilados durante el registro
Ejercicio: Validación de atributos recopilados durante el registro
La extensión de autenticación personalizada admite el evento de envío de la colección de atributos. Este evento permite realizar la validación de los atributos recopilados por el usuario durante el registro. Para nuestro sitio web de comestibles, validaremos el nombre de la ciudad con una lista de países compilada en la API de REST de la extensión de autenticación personalizada. Además, si la ciudad contiene un bloque, el identificador externo de Microsoft Entra mostrará una página de bloque. Si la ciudad contiene modificar, la id. externa de Microsoft Entra modificará algunos de los atributos (nombre para mostrar y ciudad).
Nota:
Necesitará al menos el rol de directorio Administrador de extensibilidad de autenticación para configurar la validación de atributos recopilados durante el registro.
Este rol es un rol con privilegios. Lea los procedimientos recomendados para trabajar con roles con privilegios.
¿Tiene comentarios? Háganos saber cómo va su proyecto de prueba de concepto. No gustaría conocer su opinión.
Sugerencia
También puede ver un ejemplo de una API web de C# de .NET que muestra cómo usar la extensión de autenticación personalizada de la id. externa de Microsoft Entra para varios eventos aquí.
Empiece por registrar una extensión de autenticación personalizada que use la id. externa de Microsoft Entra para llamar a la API de REST. La extensión de autenticación personalizada contiene información sobre el punto de conexión de la API de REST, la acción de inicio de la colección de atributos que analiza desde la API de REST y cómo autenticarse en la API de REST. Inicie sesión en el Centro de administración Microsoft Entra y vaya a External Identities>Extensiones de autenticación personalizada. Tenga en cuenta que también puede ir a Aplicaciones>Aplicaciones empresariales>Extensiones de autenticación personalizadas. A continuación, seleccione Crear una extensión personalizada.
En Datos básicos, seleccione el evento AttributeCollectionSubmit y, a continuación, seleccione Siguiente.
En Configuración de punto de conexión, rellene las siguientes propiedades:
Nombre: un nombre para la extensión de autenticación personalizada, por ejemplo, Validar la entrada del usuario de registro.
Dirección URL de destino: la dirección URL de la API de REST.
Tiempo de espera en milisegundos: se llamará al número máximo de reintentos al punto de conexión de API en caso de error. Si está vacío, este valor tiene como valor predeterminado el valor predeterminado del servicio.
Número máximo de reintentos: se llamará al número máximo de reintentos al punto de conexión de API en caso de error. Si está vacío, este valor tiene como valor predeterminado el valor predeterminado del servicio.
Descripción: descripción de la extensión de autenticación personalizada. Para continuar, seleccione Siguiente.
Para asegurarse de que la comunicación entre la extensión de autenticación personalizada y la API de REST están protegidas correctamente, se deben aplicar varios controles de seguridad. El primer paso es crear o elegir una aplicación que use Id. externa de Microsoft Entra. Usa el flujo de concesión de credenciales de cliente de OAuth 2.0 para proteger la llamada al punto de conexión de API.
Si esta es la primera extensión de autenticación personalizada, vea cómo hemos configurado nuestro evento TokenIssuanceStart. Puesto que ya hemos configurado una extensión de autenticación personalizada, en Autenticación de API, elija la opción Seleccionar un registro de aplicación existente en este directorio.
Seleccione la aplicación que configuró para las otras extensiones de autenticación personalizadas y elija Seleccionar.
Revise la configuración y seleccione Crear, que registra la extensión de autenticación personalizada que configuró y el registro de aplicación asociado que seleccionó.
En este momento, la extensión de autenticación personalizada está configurada en el inquilino, pero no se usa en ninguna de las páginas de registro. A continuación, asociará la extensión de autenticación personalizada con uno o varios de los flujos de usuario. Para ello, vaya a Identidad>External Identities>Flujos de usuario. A continuación, seleccione el flujo de usuario de la lista.
En el menú, seleccione Extensiones de autenticación personalizadas. Para asociar la extensión de autenticación personalizada, seleccione el evento Antes de recopilar información del usuario.
Se mostrarán las extensiones personalizadas configuradas para el evento OnAttributeCollectionStart. Seleccione uno de ellas para el evento de inicio de la colección de atributos y, a continuación, elija Seleccionar para guardar los cambios.
Buen trabajo Ha creado una extensión de autenticación personalizada de tipo OnAttributeCollectionSubmit y, a continuación, la ha asociado al flujo de usuario.
1. Registro de la aplicación de extensión de autenticación personalizada
Si se trata de la primera extensión de autenticación personalizada, registre la aplicación de extensión de autenticación personalizada.
2. Registro de la extensión de autenticación personalizada
A continuación, registre la extensión de autenticación personalizada. Para registrar la extensión de autenticación personalizada, asóciela a la aplicación de seguridad de extensión de autenticación personalizada que creó y al punto de conexión de la API de REST. Reemplace los siguientes valores por los suyos propios: - {app-ID} por el identificador de aplicación de la llamada anterior Aplicación de seguridad de extensión de autenticación personalizada. - {REST-API-domain} por el nombre de dominio de la API de REST, {Endpoint-URL}, con la dirección URL del punto de conexión de la API de REST
POST https://graph.microsoft.com/beta/identity/customAuthenticationExtensions
{
"@odata.type": "#microsoft.graph.onAttributeCollectionSubmitCustomExtension",
"displayName": "Validate sign-up user input",
"description": "Validate user input including the city name and may ask the user to correct the data or block the user",
"behaviorOnError": null,
"authenticationConfiguration": {
"@odata.type": "#microsoft.graph.azureAdTokenAuthentication",
"resourceId": "api://{REST-API-domain}/{app-ID}"
},
"endpointConfiguration": {
"@odata.type": "#microsoft.graph.httpRequestEndpoint",
"targetUrl": "{Endpoint-URL}"
},
"clientConfiguration": {
"timeoutInMilliseconds": null,
"maximumRetries": null
}
}
Ejemplo
POST https://graph.microsoft.com/beta/identity/customAuthenticationExtensions
{
"@odata.type": "#microsoft.graph.onAttributeCollectionSubmitCustomExtension",
"displayName": "Validate sign-up user input",
"description": "Validate user input including the city name and may ask the user to correct the data or block the user",
"behaviorOnError": null,
"authenticationConfiguration": {
"@odata.type": "#microsoft.graph.azureAdTokenAuthentication",
"resourceId": "api://auth-api.woodgrovedemo.com/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1"
},
"endpointConfiguration": {
"@odata.type": "#microsoft.graph.httpRequestEndpoint",
"targetUrl": "https://auth-api.woodgrovedemo.com/OnAttributeCollectionSubmit"
},
"clientConfiguration": {
"timeoutInMilliseconds": null,
"maximumRetries": null
}
}
2.1 Copia del identificador de extensión de autenticación personalizada
En la respuesta, copie el valor del identificador. Por ejemplo:
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#identity/customAuthenticationExtensions/$entity",
"@odata.type": "#microsoft.graph.onAttributeCollectionStartCustomExtension",
"id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"displayName": "Prepopulate sign-up attributes",
"description": "Prepopulate sign-up attributes from a REST API",
}
2.2 Creación de un agente de escucha de eventos de autenticación
Después de registrar la extensión de autenticación personalizada, cree un agente de escucha de eventos de autenticación. En el siguiente JSON, reemplace {Custom-auth-extension-ID} por la extensión de autenticación personalizada que acaba de crear.
POST https://graph.microsoft.com/beta/identity/authenticationEventListeners
{
"@odata.type": "#microsoft.graph.onAttributeCollectionSubmitListener",
"conditions": {
"applications": {
"includeAllApplications": false,
"includeApplications": []
}
},
"priority": 500,
"handler": {
"@odata.type": "#microsoft.graph.onAttributeCollectionSubmitCustomExtensionHandler",
"customExtension": {
"id": "{Custom-auth-extension-ID}"
}
}
}
Ejemplo
POST https://graph.microsoft.com/beta/identity/authenticationEventListeners
{
"@odata.type": "#microsoft.graph.onAttributeCollectionSubmitListener",
"conditions": {
"applications": {
"includeAllApplications": false,
"includeApplications": []
}
},
"priority": 500,
"handler": {
"@odata.type": "#microsoft.graph.onAttributeCollectionSubmitCustomExtensionHandler",
"customExtension": {
"id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
}
}
}
2.3 Vinculación de la extensión de autenticación personalizada a un flujo de usuario
Actualice el flujo de usuario. En la siguiente solicitud, reemplace los siguientes valores por los suyos propios: - {user-flow-ID} por el identificador de flujo de usuario. - {Custom-auth-extension-ID} por la extensión de autenticación personalizada que acaba de crear.
PUT https://graph.microsoft.com/beta/identity/authenticationEventsFlows/{user-flow-ID}/microsoft.graph.externalUsersSelfServiceSignUpEventsFlow/onAttributeCollectionSubmit/microsoft.graph.onAttributeCollectionSubmitCustomExtensionHandler/customExtension/$ref
{
"@odata.id": "https://graph.microsoft.com/beta/identity/customAuthenticationExtensions/{Custom-auth-extension-ID}"
}
Ejemplo
PUT https://graph.microsoft.com/beta//identity/authenticationEventsFlows/bbbbbbbb-1111-2222-3333-cccccccccccc/microsoft.graph.externalUsersSelfServiceSignUpEventsFlow/onAttributeCollectionSubmit/microsoft.graph.onAttributeCollectionSubmitCustomExtensionHandler/customExtension/$ref
{
"@odata.id": "https://graph.microsoft.com/beta/identity/customAuthenticationExtensions/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
}