Autenticación local en data API Builder
Al desarrollar una solución mediante el generador de API de datos localmente o al ejecutar data API Builder localmente, debe probar las opciones de autenticación y autorización configuradas simulando una solicitud con un rol o una notificación específicos.
Para simular una solicitud autenticada sin configurar un proveedor de autenticación (como Microsoft Entra ID, por ejemplo), puede usar los Simulator
proveedores de autenticación o StaticWebApps
:
Uso del Simulator
proveedor
Simulator
es un proveedor de autenticación configurable que indica al motor del Generador de API de datos que trate todas las solicitudes como autenticadas.
- Como mínimo, todas las solicitudes se evalúan en el contexto del rol
Authenticated
del sistema . - Si lo desea, la solicitud se evalúa en el contexto de cualquier rol indicado en el
X-MS-API-ROLE
encabezado Http.
Nota
Aunque se respetará el rol deseado, los permisos de autorización que definen las directivas de base de datos no funcionarán porque las notificaciones personalizadas no se pueden establecer para el usuario autenticado con el Simulator
proveedor. Continúe con la sección Uso del StaticWebApps
proveedor para probar las directivas de autorización de base de datos.
1. Actualización del proveedor de autenticación de configuración en tiempo de ejecución
Asegúrese de que, en el archivo de configuración, use el Simulator
proveedor de autenticación y development
el modo especificados. Consulte esta sección de configuración de ejemplo host
:
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
2. Especificar el contexto de rol de la solicitud
Con Simulator
como proveedor de autenticación de Data API Builder, no es necesario ningún encabezado personalizado para establecer el contexto de rol en el rol Authenticated
del sistema :
curl --request GET \
--url http://localhost:5000/api/books \
Para establecer el contexto de rol en cualquier otro rol, incluido el rol Anonymous
del sistema, el X-MS-API-ROLE
encabezado debe incluirse con el rol deseado:
curl --request GET \
--url http://localhost:5000/api/books \
--header 'X-MS-API-ROLE: author' \
Uso del StaticWebApps
proveedor
El StaticWebApps
proveedor de autenticación indica a Data API Builder que busque un conjunto de encabezados HTTP solo presentes cuando se ejecute dentro de un entorno de Static Web Apps. El cliente establece estos encabezados HTTP cuando se ejecutan localmente para simular un usuario autenticado, incluida cualquier pertenencia a roles o notificaciones personalizadas.
Nota
Las instancias proporcionadas por el cliente del encabezado Http, X-MS-CLIENT-PRINCIPAL
, solo funcionarán al desarrollar localmente porque los entornos de Azure Static Web Apps de producción quitan todas las instancias proporcionadas por el cliente de ese encabezado.
Asegúrese de que en el archivo de configuración que usa el StaticWebApps
proveedor de autenticación. Consulte esta sección de configuración de ejemplo host
:
"host": {
"mode": "development",
"authentication": {
"provider": "StaticWebApps"
}
}
1. Envío de solicitudes que proporcionan un encabezado generado X-MS-CLIENT-PRINCIPAL
Una vez que data API Builder se ejecuta localmente y se configura para usar el StaticWebApps
proveedor de autenticación, puede generar manualmente un objeto de entidad de seguridad de cliente mediante la plantilla siguiente:
{
"identityProvider": "test",
"userId": "12345",
"userDetails": "john@contoso.com",
"userRoles": ["author", "editor"]
}
Los metadatos de usuario autenticados de Static Web App tienen las siguientes propiedades:
Propiedad | Descripción |
---|---|
identityProvider | Cualquier valor de cadena. |
userId | Identificador único para el usuario. |
userDetails | Nombre de usuario o dirección de correo electrónico del usuario. |
userRoles | Matriz de los roles asignados del usuario. |
Nota
Como se indicó en Static Web Apps documentación, el X-MS-CLIENT-PRINCIPAL
encabezado no contiene la claims
matriz.
Para pasarse con el X-MS-CLIENT-PRINCIPAL
encabezado , la carga JSON debe estar codificada en Base64. Puede usar cualquier herramienta en línea o sin conexión para hacerlo. Una de estas herramientas es DevToys. Una carga codificada en Base64 de ejemplo que representa el json al que se hace referencia anteriormente:
eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9
La siguiente solicitud cURL simula un usuario autenticado que recupera la lista de registros de entidades disponibles Book
en el contexto del author
rol:
curl --request GET \
--url http://localhost:5000/api/books \
--header 'X-MS-API-ROLE: author' \
--header 'X-MS-CLIENT-PRINCIPAL: eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9'