Compartir a través de


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 Authenticateddel 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 Authenticateddel sistema :

curl --request GET \
  --url http://localhost:5000/api/books \

Para establecer el contexto de rol en cualquier otro rol, incluido el rol Anonymousdel 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'