Compartir a través de


Configuración de la autenticación del simulador para pruebas locales

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:

Ilustración del flujo de autenticación del simulador que muestra cómo se tratan automáticamente las solicitudes como autenticadas.

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.json existente 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:

  1. Cambiar mode de development a production
  2. Cambie provider de Simulator a su proveedor elegido (EntraID/AzureAD, AppServiceo )Custom
  3. 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": ["*"]
        }
      ]
    }
  }
}