Tutorial: asignación de roles personalizados con una función y Microsoft Graph (versión preliminar)
En este artículo se muestra cómo usar una función para consultar Microsoft Graph y asignar roles personalizados a un usuario en función de su pertenencia a grupos Entra ID.
En este tutorial, aprenderá a:
- Implementación de una aplicación web estática.
- Cree un registro de aplicaciones de Microsoft Entra.
- Configure la autenticación personalizada con Microsoft Entra ID.
- Configure una función sin servidor que consulte la pertenencia a grupos Entra ID del usuario y devuelva una lista de roles personalizados.
Nota:
En este tutorial es necesario usar una función para asignar roles. La administración de roles basada en funciones está actualmente en versión preliminar. El nivel de permiso necesario para completar este tutorial es "User.Read.All".
Hay una función denominada GetRoles en la API de la aplicación. Esta función usa el token de acceso del usuario para realizar consultas en Entra ID desde Microsoft Graph. Si el usuario es miembro de cualquier grupo definido en la aplicación, se asignan al usuario los roles personalizados correspondientes.
Requisitos previos
Requisito | Comentarios |
---|---|
Una cuenta activa de Azure | En caso de no tener una, puede crear una cuenta gratuita. |
Permisos de Microsoft Entra | Debe tener permisos suficientes para crear una aplicación de Microsoft Entra. |
Crear un repositorio de GitHub
Generación de un repositorio basado en la plantilla de función de roles. Vaya a la siguiente ubicación para crear un nuevo repositorio.
Asigne el nombre my-custom-roles-app al repositorio.
Seleccione Create repository from template (Crear repositorio a partir de plantilla).
Implementación de la aplicación web estática en Azure
En una nueva ventana del explorador, abra Azure Portal.
En la esquina superior izquierda, haga clic en Crear un recurso.
Escriba static web apps en el cuadro de búsqueda.
Seleccione Static Web Apps.
Seleccione Crear.
Configure la aplicación web estática con la siguiente información:
Configuración Value Notas Subscription Seleccione su suscripción a Azure. Resource group Cree un grupo nuevo denominado my-custom-roles-app-group. Nombre my-custom-roles-app Tipo de plan Estándar La personalización de la autenticación y la asignación de roles mediante una función requieren el plan Estándar. Región de la API Seleccione la región más cercana a la suya. En la sección Detalles de la implementación:
Configuración Valor Source Seleccione GitHub. Organización Seleccione la organización en la que ha generado el repositorio. Repositorio Seleccione my-custom-roles-app. Rama Seleccione main (principal). En la sección Detalles de la compilación, agregue los detalles de configuración de esta aplicación.
Configuración Value Notas Valores preestablecidos de compilación seleccione Personalizada. Ubicación de la aplicación Escriba /frontend. Esta carpeta contiene la aplicación de front-end. Ubicación de la API /api Carpeta del repositorio que contiene las funciones de la API. Ubicación del resultado déjelo en blanco. Esta aplicación no tiene salida de compilación. Seleccione Revisar + crear.
Seleccione Crear para iniciar la primera implementación.
Una vez completado el proceso, seleccione Ir al recurso para abrir la nueva aplicación web estática.
En la sección de información general, busque la dirección URL de la aplicación. Copie este valor en un editor de texto para usarlo en los próximos pasos para configurar la autenticación de Entra.
Creación de una aplicación de Microsoft Entra
En Azure Portal, busque y vaya a Microsoft Entra ID.
En el menú Administrar, seleccione Registros de aplicaciones.
Seleccione Nuevo registro para abrir la ventana Registrar una aplicación. Escriba los siguientes valores:
Configuración Value Notas Nombre Escriba MyStaticWebApp. Tipos de cuenta admitidos Seleccione Solo las cuentas de este directorio organizativo. URI de redireccionamiento Seleccione Web y escriba la URL de devolución de llamadas de autenticación de Microsoft Entra de la aplicación web estática. Reemplace <YOUR_SITE_URL>
en<YOUR_SITE_URL>/.auth/login/aad/callback
por la dirección URL de la aplicación web estática.Esta dirección URL es lo que copió en un editor de texto en un paso anterior. Seleccione Registrar.
Una vez creado el registro de la aplicación, copie el Id. de aplicación (cliente) y el Id. de directorio (inquilino) en la sección Essentials de un editor de texto.
Necesita estos valores para configurar la autenticación de Entra ID en la aplicación web estática.
Habilitación de tokens de identificador
En la configuración del registro de aplicaciones, seleccione Autenticación en Administrar.
En la sección Flujos de concesión implícita e híbridos, seleccione Tokens de id. (utilizados para flujos implícitos e híbridos) .
El entorno de ejecución de Static Web Apps requiere esta configuración para autenticar a los usuarios.
Seleccione Guardar.
Creación de un secreto de cliente
En la configuración del registro de aplicaciones, seleccione Certificados y secretos en Administrar.
En la sección Secretos de cliente, seleccione Nuevo secreto de cliente.
En el campo Descripción, escriba MyStaticWebApp.
En el campo Expiración, deje el valor predeterminado de 6 meses.
Nota
Debe rotar el secreto antes de la fecha de expiración generando un nuevo secreto y actualizando la aplicación con su valor.
Seleccione Agregar.
Copie el valor del secreto de cliente que creó en un editor de texto.
Necesita este valor para configurar la autenticación de Entra ID en la aplicación web estática.
Configuración de la autenticación de Entra ID
En un explorador, abra el repositorio GitHub que contiene la aplicación web estática que implementó.
Vaya al archivo de configuración de la aplicación en frontend/staticwebapp.config.json. Este archivo contiene las secciones siguientes:
"auth": { "rolesSource": "/api/GetRoles", "identityProviders": { "azureActiveDirectory": { "userDetailsClaim": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", "registration": { "openIdIssuer": "https://login.microsoftonline.com/<YOUR_ENTRA_TENANT_ID>", "clientIdSettingName": "ENTRA_CLIENT_ID", "clientSecretSettingName": "ENTRA_CLIENT_SECRET" }, "login": { "loginParameters": [ "resource=https://graph.microsoft.com" ] } } } },
Esta configuración consta de las siguientes opciones de configuración:
Propiedades Descripción rolesSource
Dirección URL en la que el proceso de inicio de sesión obtiene una lista de roles disponibles. Para la aplicación de ejemplo, la dirección URL es /api/GetRoles
.userDetailsClaim
La dirección URL del esquema utilizado para validar la solicitud de inicio de sesión. openIdIssuer
La ruta de inicio de sesión de Microsoft Entra, anexada con el identificador de inquilino. clientIdSettingName
Identificador del cliente de Microsoft Entra. clientSecretSettingName
Valor del secreto de cliente de Microsoft Entra. loginParameters
Para obtener un token de acceso para Microsoft Graph, el campo loginParameters
debe configurarse conresource=https://graph.microsoft.com
.Seleccione Editar para actualizar el archivo.
Actualice el valor openIdIssuer de
https://login.microsoftonline.com/<YOUR_ENTRA_TENANT_ID>
reemplazando<YOUR_ENTRA_TENANT_ID>
por el id. de directorio (inquilino) de Microsoft Entra ID.Seleccione Confirmar cambios....
Escriba un mensaje de confirmación y seleccione Confirmar cambios.
Al confirmar estos cambios, se inicia una ejecución de Acciones de GitHub para actualizar la aplicación web estática.
Vaya al recurso de la aplicación web estática en Azure Portal.
En la barra del menú, seleccione Configuración.
En la sección Configuración de la aplicación, agregue la siguiente configuración:
Nombre Valor ENTRA_CLIENT_ID
Identificador de la aplicación Entra ID (cliente). ENTRA_CLIENT_SECRET
Valor del secreto de cliente de la aplicación Entra. Seleccione Guardar.
Crear roles
Abra el registro de la aplicación Entra ID en Azure Portal.
En Administrar, seleccione Roles de aplicación.
Seleccione Crear rol de aplicación y escriba los valores siguientes:
Configuración Value Nombre para mostrar Escriba admin. Tipos de miembros permitido Seleccione Usuarios o grupos. Valor Escriba admin. Descripción Escriba Administrador. Active la casilla ¿Desea habilitar este rol de aplicación?
Seleccione Aplicar.
Ahora repita el mismo proceso para un rol denominado lector.
Copie los valores de id. de cada rol y resérvelos en un editor de texto.
Verificación de roles personalizados
La aplicación de ejemplo contiene una función de API (api/GetRoles/index.js) que consulta Microsoft Graph para determinar si un usuario está en un grupo definido previamente.
En función de las pertenencias a grupos del usuario, la función asigna roles personalizados al usuario. La aplicación está configurada para restringir determinadas rutas en función de estos roles personalizados.
En el repositorio de GitHub, vaya a la función GetRoles que se encuentra en api/GetRoles/index.js.
Cerca de la parte superior, hay un objeto
roleGroupMappings
que asigna roles de usuario personalizados a grupos de Microsoft Entra.Seleccione Editar.
Actualice el objeto con los id. de grupo del inquilino de Microsoft Entra.
Por ejemplo, si tiene grupos con los id.
6b0b2fff-53e9-4cff-914f-dd97a13bfbd6
yb6059db5-9cef-4b27-9434-bb793aa31805
, actualizaría el objeto a:const roleGroupMappings = { 'admin': '6b0b2fff-53e9-4cff-914f-dd97a13bfbd6', 'reader': 'b6059db5-9cef-4b27-9434-bb793aa31805' };
Se llama a la función GetRoles cada vez que un usuario se autentica correctamente con Microsoft Entra ID. La función usa el token de acceso del usuario para consultar su pertenencia al grupo Entra de Microsoft Graph. Si el usuario es miembro de cualquier grupo definido en el objeto
roleGroupMappings
, se devuelven los roles personalizados correspondientes.En el ejemplo anterior, si un usuario es miembro del grupo de Entra ID con el identificador
b6059db5-9cef-4b27-9434-bb793aa31805
, se le concede el rolreader
.Seleccione Confirmar cambios....
Agregue un mensaje de confirmación y seleccione Confirmar cambios.
Al realizar estos cambios, se inicia una compilación para actualizar la aplicación web estática.
Una vez completada la implementación, puede verificar los cambios; para ello, vaya a la dirección URL de la aplicación.
Inicie sesión en la aplicación web estática mediante Microsoft Entra ID.
Cuando haya iniciado sesión, la aplicación de ejemplo muestra la lista de roles que se le asignan en función de la pertenencia a grupos de Entra ID de su identidad.
En función de estos roles, se le permite o prohíbe acceder a algunas de las rutas de la aplicación.
Nota
Algunas consultas en Microsoft Graph devuelven varias páginas de datos. Cuando se requiere más de una solicitud de consulta, Microsoft Graph devuelve una propiedad @odata.nextLink
en la respuesta que contiene una dirección URL a la página siguiente de resultados. Para obtener más información, consulte Paginación de datos de Microsoft Graph en la aplicación
Limpieza de recursos
Limpie los recursos que implementó eliminando el grupo de recursos.
En Azure Portal, seleccione Grupos de recursos en el menú de la izquierda.
Escriba el nombre del grupo de recursos en el campo Filtrar por nombre.
Seleccione el nombre del grupo de recursos que ha utilizado en este tutorial.
Seleccione Eliminar grupo de recursos del menú superior.