Configuración de un proveedor de notificaciones personalizado para un evento de emisión de tokens
En este artículo se describe cómo configurar un proveedor de notificaciones personalizado para un evento de inicio de emisión de tokens. Con una API de REST de Azure Functions existente, registrará una extensión de autenticación personalizada y agregará atributos que espera que analice desde la API de REST. Para probar la extensión de autenticación personalizada, registrará una aplicación de OpenID Connect de ejemplo para obtener un token y ver las notificaciones.
Requisitos previos
- Una suscripción de Azure con la capacidad de crear funciones de Azure. Si no dispone de una cuenta de Azure, puede registrarse para obtener una evaluación gratuita o usar las ventajas de su Visual Studio Subscription cuando cree una cuenta.
- Función de desencadenador HTTP configurada para un evento de emisión de tokens implementado en Azure Functions. Si no tiene una, siga los pasos descritos en Creación de una API de REST para un evento de inicio de emisión de tokens en Azure Functions.
- Conocimientos básicos de los conceptos descritos en Introducción a las extensiones de autenticación personalizadas.
- Un inquilino de Microsoft Entra ID. Puede usar un inquilino de cliente o de personal para esta guía paso a paso.
- Para los inquilinos de cliente, use un flujo de usuario de registro e inicio de sesión.
Paso 1: Registrar una extensión de autenticación personalizada
Ahora configurará una extensión de autenticación personalizada, que usará Microsoft Entra ID para llamar a la función de Azure. La extensión de autenticación personalizada contiene información sobre el punto de conexión de la API de REST, las notificaciones que analiza desde la API de REST y cómo autenticarse en la API de REST. Siga estos pasos para registrar una extensión de autenticación personalizada en la aplicación de funciones de Azure.
Nota:
Es posible tener un máximo de 100 directivas de extensión personalizadas.
Registrar una extensión de autenticación personalizada
- Inicie sesión en Azure Portal como al menos un Administrador de aplicaciones y un Administrador de autenticación.
- Busque y seleccione Microsoft Entra ID y seleccione Aplicaciones empresariales.
- Seleccione Extensiones de autenticación personalizadas y, después, seleccione Crear una extensión personalizada.
- En Aspectos básicos, seleccione el tipo de evento TokenIssuanceStart y seleccione Siguiente.
- En Configuración de punto de conexión, rellene las siguientes propiedades:
- Nombre: nombre de la extensión de autenticación personalizada. Por ejemplo, Evento de emisión de tokens.
- Dirección URL de destino:
{Function_Url}
de la dirección URL de la función de Azure. Vaya a la página Información general de la aplicación de funciones de Azure y seleccione la función que ha creado. En la página Información general de la función, seleccione Obtener dirección URL de función y use el icono de copia para copiar la dirección URL de customauthenticationextension_extension (clave del sistema). - Descripción: descripción de la extensión de autenticación personalizada.
- Seleccione Next (Siguiente).
- En Autenticación de API, seleccione la opción Crear un nuevo registro de aplicación para crear un registro de aplicación que represente a la aplicación de funciones.
- Asigne un nombre a la aplicación; por ejemplo, API de eventos de autenticación de Azure Functions.
- Seleccione Next (Siguiente).
- En Notificaciones, escriba los atributos que espera que la extensión de autenticación personalizada analice desde la API de REST y que se combinarán con el token. Agregue las siguientes notificaciones:
- dateOfBirth
- customRoles
- apiVersion
- correlationId
- Seleccione Siguiente y Crear para registrar la extensión de autenticación personalizada y el registro de aplicación asociado.
- Anote el identificador de aplicación en Autenticación de API, que es necesario para configurar la autenticación para la función de Azure en la aplicación de funciones de Azure.
1.2 Concesión del consentimiento del administrador
Una vez creada la extensión de autenticación personalizada, debe conceder permisos a la API. La extensión de autenticación personalizada usa client_credentials
para autenticarse en la aplicación de funciones de Azure mediante el permiso Receive custom authentication extension HTTP requests
.
Abra la página Información general de la nueva extensión de autenticación personalizada. Tome nota del Identificador de aplicación en Autenticación de API, ya que será necesario al agregar un proveedor de identidades.
En Autenticación de API, seleccione Conceder permiso.
Se abre una nueva ventana y, una vez iniciada, solicita permisos para recibir solicitudes HTTP de extensión de autenticación personalizadas. Esto permite que la extensión de autenticación personalizada se autentique en la API. Seleccione Aceptar.
Paso 2: Configurar una aplicación OpenID Connect para recibir tokens enriquecidos
Para obtener un token y probar la extensión de autenticación personalizada, puede usar la aplicación https://jwt.ms. Es una aplicación web de Microsoft que muestra el contenido descodificado de un token (el contenido del token nunca sale del explorador).
2.1 Registro de una aplicación web de prueba
Siga estos pasos para registrar la aplicación web jwt.ms:
En la página principal de Azure Portal, seleccione Microsoft Entra ID.
Seleccione Registros de aplicaciones>Nuevo registro.
Escriba un Nombre para la aplicación. Por ejemplo, Mi aplicación de prueba.
En Tipos de cuenta admitidos, seleccione Solo las cuentas de este directorio organizativo.
En la lista desplegable Seleccionar una plataforma, en URI de redirección, seleccione Web y escriba
https://jwt.ms
en el cuadro de texto Dirección URL.Seleccione Registrar para completar el registro de la aplicación.
En la página Información general del registro de la aplicación, copie el Identificador de aplicación (cliente). Al id. de la aplicación se hace referencia como
{App_to_enrich_ID}
en pasos posteriores. En Microsoft Graph, se hace referencia a él mediante la propiedad appId.
2.2 Habilitación del flujo implícito
La aplicación de prueba jwt.ms usa el flujo implícito. Habilite el flujo implícito en el registro de Mi aplicación de prueba:
- En Administrar, seleccione Autenticación.
- En Flujos de concesión implícita e híbridos, seleccione la casilla de verificación Tokens de id. (usados para flujos híbridos e implícitos).
- Seleccione Guardar.
2.3 Habilitación de la aplicación para una directiva de asignación de notificaciones
Una directiva de asignación de notificaciones se usa para seleccionar los atributos devueltos de la extensión de autenticación personalizada que se asignan al token. Para permitir que se aumenten los tokens, debe habilitar explícitamente el registro de la aplicación para aceptar notificaciones asignadas:
- En el registro de Mi aplicación de prueba, en Administrar, seleccione Manifiesto.
- En el manifiesto, busque el atributo
acceptMappedClaims
y establezca el valor entrue
. - Establecer
accessTokenAcceptedVersion
en2
. - Seleccione Guardar para guardar los cambios.
El siguiente fragmento de código JSON muestra cómo configurar estas propiedades.
{
"id": "22222222-0000-0000-0000-000000000000",
"acceptMappedClaims": true,
"accessTokenAcceptedVersion": 2,
...
}
Advertencia
No establezca la propiedad acceptMappedClaims
en true
para las aplicaciones multiinquilino, ya que puede permitir que actores malintencionados creen directivas de asignación de notificaciones para la aplicación. En su lugar, configure una clave de firma personalizada.
Continúe con el paso siguiente, Asignar un proveedor de notificaciones personalizado a la aplicación.
Paso 3: Asignación de un proveedor de notificaciones personalizado a la aplicación
Para que los tokens se emitan con notificaciones entrantes de la extensión de autenticación personalizada, debe asignar un proveedor de notificaciones personalizado a la aplicación. Esto se basa en la audiencia del token, por lo que el proveedor debe asignarse a la aplicación cliente para recibir reclamaciones en un token de identificación, y a la aplicación de recursos para recibir reclamaciones en un token de acceso. El proveedor de notificaciones personalizado se basa en la extensión de autenticación personalizada configurada con el agente de escucha de eventos de inicio de emisión de tokens. Puede elegir si se asignan al token todas las notificaciones del proveedor de notificaciones personalizados o un subconjunto de ellas.
Nota:
Solo es posible crear 250 asignaciones únicas entre aplicaciones y extensiones personalizadas. Si desea aplicar la misma llamada de extensión personalizada a varias aplicaciones, se recomienda usar la Microsoft Graph API authenticationEventListeners para crear clientes de escucha para varias aplicaciones. Esto no se admite en Azure Portal.
Siga estos pasos para conectar Mi aplicación de prueba con la extensión de autenticación personalizada:
Para asignar la extensión de autenticación personalizada como origen del proveedor de notificaciones personalizado:
En la página principal de Azure Portal, seleccione Microsoft Entra ID.
Seleccione Aplicación empresarial y, después, en Administrar seleccione Todas las aplicaciones. Busque y seleccione Mi aplicación de prueba en la lista.
En la página Información general de Mi aplicación de prueba, vaya a Administrar y seleccione Inicio de sesión único.
En Atributos y reclamaciones, seleccione Editar.
Expanda el menú Configuración avanzada.
Junto a Proveedor de notificaciones personalizado, seleccione Configurar.
Expanda el cuadro desplegable Proveedor de notificaciones personalizado y seleccione el Evento de emisión de tokens que creó antes.
Seleccione Guardar.
A continuación, asigne los atributos del proveedor de notificaciones personalizado, que deben emitirse en el token como notificaciones:
Seleccione Agregar nueva notificación para agregar una nueva notificación. Proporcione un nombre para la notificación que desea emitir; por ejemplo dateOfBirth.
En Origen, seleccione Atributo y elija customClaimsProvider.dateOfBirth en el cuadro desplegable Atributo de origen.
Seleccione Guardar.
Repita este proceso para agregar los atributos customClaimsProvider.customRoles, customClaimsProvider.apiVersion y customClaimsProvider.correlationId, y el nombre correspondiente. Es recomendable que el nombre de la notificación coincida con el nombre del atributo.
Paso 4: Protección de la función de Azure
La extensión de autenticación personalizada de Microsoft Entra usa el flujo de servidor a servidor para obtener un token de acceso que se envía en el encabezado HTTP Authorization
a la función de Azure. Al publicar la función en Azure, especialmente en un entorno de producción, debe validar el token enviado en el encabezado de autorización.
Para proteger la función de Azure, siga estos pasos con el fin de integrar la autenticación de Microsoft Entra, para validar los tokens entrantes con el registro de aplicación de la API de eventos de autenticación de Azure Functions.registro de aplicaciones. Elija una de las pestañas siguientes en función del tipo de inquilino.
Nota:
Si la aplicación de funciones de Azure se hospeda en un inquilino de Azure diferente del inquilino en el que está registrada la extensión de autenticación personalizada, elija la pestaña Open ID Connect.
4.1 Uso de un proveedor de identidades de Microsoft Entra
Use estos pasos para agregar Microsoft Entra como proveedor de identidades a la aplicación de funciones de Azure.
En Azure Portal, busque la aplicación de funciones que publicó antes y selecciónela.
En Configuración, seleccione Autenticación.
Seleccione Agregar proveedor de identidades.
Seleccione Microsoft como proveedor de identidades.
Seleccione Personal como tipo de inquilino.
En Registro de aplicación, seleccione Seleccionar un registro de aplicación existente en este directorio para el Tipo de registro de la aplicación y seleccione la API de eventos de autenticación de Azure Functions que creó antes al registrar el proveedor de notificaciones personalizado.
Escriba la siguiente dirección URL del emisor,
https://login.microsoftonline.com/{tenantId}/v2.0
, donde{tenantId}
es el identificador de inquilino del inquilino del personal.En Requisito de aplicación cliente, selecciona Permitir solicitudes de aplicaciones cliente específicas y especifica
99045fe1-7639-4a75-9d4a-577b6ca3810f
.En Requisito de inquilino, selecciona Permitir solicitudes de inquilinos específicos y escribe tu id. de inquilino de personal.
En Solicitudes no autenticadas, seleccione HTTP 401 No autorizado como proveedor de identidades.
Anule la selección de la opción Almacén de tokens.
Seleccione Agregar para agregar autenticación a la función de Azure.
4.2 Uso del proveedor de identidades de OpenID Connect
Si ha configurado el proveedor de identidades de Microsoft, omita este paso. De lo contrario, si la función de Azure está hospedada en un inquilino diferente al inquilino en el que está registrada la extensión de autenticación personalizada, siga estos pasos para proteger la función:
Creación de un secreto de cliente
- En la página Principal de Azure Portal, seleccione Microsoft Entra ID>Registros de aplicaciones.
- Seleccione el registro de aplicación de la API de eventos de autenticación de Azure Functionsque creó antes.
- Seleccione Certificates & secrets>Client secrets>New client secret (Certificados y secretos > Secretos de cliente > Nuevo secreto de cliente).
- Seleccione una expiración para el secreto o especifique una duración personalizada, agregue una descripción y seleccione Agregar.
- Registre el valor del secreto para usarlo en el código de la aplicación cliente. Este valor secreto no se volverá a mostrar una vez que abandone esta página.
Agregue el proveedor de identidades de OpenID Connect a la aplicación de funciones de Azure.
Busque y seleccione la aplicación de funciones que publicó anteriormente.
En Configuración, seleccione Autenticación.
Seleccione Agregar proveedor de identidades.
Seleccione OpenID Connect como proveedor de identidades.
Proporcione un nombre, como Contoso Microsoft Entra ID.
En Entrada de metadatos, escriba la siguiente URL en el cuadro Dirección URL del documento. Reemplace por el
{tenantId}
identificador de inquilino de Microsoft Entra.https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration
En Registro de aplicación, escriba el id. de la aplicación (id. de cliente) del registro de aplicación de la API de eventos de autenticación de Azure Functionsque creó antes.
Vuelva a la función de Azure y, en Registro de aplicación, escriba el Secreto de cliente.
Anule la selección de la opción Almacén de tokens.
Seleccione Agregar para agregar el proveedor de identidades de OpenID Connect.
Paso 5: Pruebe la aplicación
Para probar el proveedor de notificaciones personalizado, siga estos pasos:
Abra un nuevo explorador privado, vaya a la siguiente dirección URL e inicie sesión.
https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/authorize?client_id={App_to_enrich_ID}&response_type=id_token&redirect_uri=https://jwt.ms&scope=openid&state=12345&nonce=12345
Reemplace
{tenantId}
por el id. del inquilino, el nombre del inquilino o uno de los nombres de dominio comprobados. Por ejemplo,contoso.onmicrosoft.com
.Reemplace
{App_to_enrich_ID}
por el identificador de cliente de Mi aplicación de prueba.Después de iniciar sesión, se le muestra el token descodificado en
https://jwt.ms
. Compruebe que aparecen las notificaciones de la función de Azure en el token descodificado; por ejemplo,dateOfBirth
.