Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El proveedor de autenticación "Simulador" permite localmente probar los "permisos basados en roles" sin configurar un proveedor de identidades. Úselo durante el desarrollo para comprobar que las reglas de permisos funcionan correctamente antes de realizar la implementación en producción.
Elección de un proveedor de autenticación local
Durante el desarrollo, puede probar la autenticación y la autorización sin configurar un proveedor de identidades de producción.
| Provider | Más adecuado para | Notas |
|---|---|---|
| Simulador | Pruebas rápidas de permisos | Solo para desarrollo. Trata cada solicitud como autenticada. El valor predeterminado es Authenticated rol; sobrescribe con X-MS-API-ROLE. |
| AppService | Pruebas impulsadas por reclamaciones | Simular el EasyAuth localmente mediante el envío de X-MS-CLIENT-PRINCIPAL con reclamaciones personalizadas. Para más información, consulte Configuración de la autenticación de App Service. |
Flujo de autenticación
El proveedor del simulador trata todas las solicitudes como autenticadas, lo que le permite centrarse en probar las reglas de autorización:
| Phase | ¿Qué ocurre? |
|---|---|
| La solicitud llega | El desarrollador envía una solicitud HTTP a DAB |
| Asignación de roles | DAB asigna Authenticated (valor predeterminado) o el rol del encabezado X-MS-API-ROLE |
| Comprobación de permisos | DAB evalúa la solicitud con respecto a los permisos de la entidad para ese rol. |
| Ejecución de consultas | Si se permite, DAB consulta la base de datos y devuelve resultados. |
Importante
El proveedor del simulador es solo para desarrollo. Nunca lo use en producción: omite toda la autenticación real.
Prerrequisitos
- CLI de Data API Builder instalada (guía de instalación)
- Un
dab-config.jsonexistente con al menos una entidad
Referencia rápida
| Configuración | Importancia |
|---|---|
| Provider | Simulator |
| Modo de anfitrión |
development (obligatorio) |
| Rol predeterminado |
Authenticated (insertado automáticamente) |
| Encabezado de anulación de roles | X-MS-API-ROLE |
| Token necesario | No |
| Soporte de reclamaciones | Limitado (solo roles Anonymous/Authenticated del sistema; sin declaraciones arbitrarias) |
Paso 1: Configurar el proveedor del simulador
Establezca el proveedor de autenticación en Simulador y asegúrese de que el modo de desarrollo está habilitado.
Interfaz de línea de comandos (CLI)
# Enable development mode
dab configure \
--runtime.host.mode development
# Set the Simulator provider
dab configure \
--runtime.host.authentication.provider Simulator
Configuración resultante
{
"runtime": {
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
}
}
Nota:
El proveedor del simulador solo funciona cuando mode se establece en development. En el modo de producción, DAB rechaza el proveedor del simulador y no se inicia.
Paso 2: Configuración de permisos de entidad
Defina permisos para los roles que desea probar. Puede probar los roles del sistema (Anonymous, Authenticated) y los roles personalizados.
Ejemplo: Varios roles
# Allow anonymous read access
dab update Book \
--permissions "Anonymous:read"
# Allow authenticated users full read access
dab update Book \
--permissions "Authenticated:read"
# Allow authors to create and update
dab update Book \
--permissions "author:create,read,update"
# Allow admins full access
dab update Book \
--permissions "admin:*"
Configuración resultante
{
"entities": {
"Book": {
"source": "dbo.Books",
"permissions": [
{
"role": "Anonymous",
"actions": ["read"]
},
{
"role": "Authenticated",
"actions": ["read"]
},
{
"role": "author",
"actions": ["create", "read", "update"]
},
{
"role": "admin",
"actions": ["*"]
}
]
}
}
}
Paso 3: Probar distintos roles
Inicie el generador de Data API y envíe solicitudes para probar cada rol.
dab start
Prueba como autenticada (valor predeterminado)
Sin encabezados especiales, las solicitudes se evalúan como el Authenticated rol:
curl -X GET "http://localhost:5000/api/Book"
Prueba como anónima
Use el X-MS-API-ROLE encabezado para realizar pruebas como Anonymous.
curl -X GET "http://localhost:5000/api/Book" \
-H "X-MS-API-ROLE: Anonymous"
Prueba como un rol personalizado
Use el X-MS-API-ROLE encabezado para probar cualquier rol personalizado:
curl -X GET "http://localhost:5000/api/Book" \
-H "X-MS-API-ROLE: author"
Nota:
Con el simulador, las pruebas de roles personalizadas funcionan porque DAB evalúa los permisos en función del valor del encabezado X-MS-API-ROLE. Los roles del sistema (Anonymous, Authenticated) siempre están disponibles. Si una solicitud de rol personalizada devuelve 403, compruebe que el nombre del rol coincide exactamente con los permisos de entidad.
Probar una acción que debería ser denegada
Pruebe una acción para la cual el rol no tiene permiso.
# This should fail—Anonymous can only read
curl -X POST "http://localhost:5000/api/Book" \
-H "X-MS-API-ROLE: Anonymous" \
-H "Content-Type: application/json" \
-d '{"title": "New Book", "author": "Test"}'
Respuesta esperada: 403 Forbidden
Escenarios de pruebas
Use el simulador para probar estos escenarios comunes:
| Scenario | Procedimiento de prueba |
|---|---|
| Acceso anónimo | EstablezcaX-MS-API-ROLE: Anonymous. |
| Acceso autenticado | Omitir encabezados (valor predeterminado) o establecer X-MS-API-ROLE: Authenticated |
| Acceso a roles personalizados | EstablezcaX-MS-API-ROLE: <role-name>. |
| Acción denegada | Solicitud de una acción para la que el rol carece de permiso |
| Restricciones de campo | Configuración de permisos de nivel de campo y comprobación de los campos de respuesta |
| Rol no encontrado | Establecer X-MS-API-ROLE: nonexistent para probar el control de errores |
Limitaciones
El proveedor del simulador tiene estas limitaciones:
| Limitación | Solución |
|---|---|
| Sin reclamaciones personalizadas | Uso del proveedor AppService con X-MS-CLIENT-PRINCIPAL encabezado |
| No hay directivas de base de datos con declaraciones | Prueba de directivas mediante el proveedor AppService |
| Sin validación de tokens | Cambiar a Entra o proveedor personalizado para producción |
| Solo modo de desarrollo | Uso de un proveedor real en producción |
Sugerencia
Si necesita probar las directivas de base de datos que usan claims (como @claims.userId), use el proveedor de AppService en vez de. Permite proporcionar reclamaciones personalizadas mediante el encabezado X-MS-CLIENT-PRINCIPAL.
Transición a producción
Cuando esté listo para implementarse, reemplace el proveedor del simulador por un proveedor de producción:
- Cambiar
modededevelopmentaproduction - Cambie
providerdeSimulatora su proveedor elegido (EntraID/AzureAD,AppServiceo )Custom - Configurar las opciones de JWT necesarias (audiencia, emisor)
{
"runtime": {
"host": {
"mode": "production",
"authentication": {
"provider": "EntraID",
"jwt": {
"audience": "api://<your-app-id>",
"issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
}
}
}
}
}
Ejemplo de configuración completa
{
"$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json",
"data-source": {
"database-type": "mssql",
"connection-string": "Server=localhost;Database=Library;Trusted_Connection=true;TrustServerCertificate=true;"
},
"runtime": {
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
},
"entities": {
"Book": {
"source": "dbo.Books",
"permissions": [
{
"role": "Anonymous",
"actions": ["read"]
},
{
"role": "Authenticated",
"actions": ["read"]
},
{
"role": "author",
"actions": ["create", "read", "update"]
},
{
"role": "admin",
"actions": ["*"]
}
]
}
}
}