Simulación de una API CRUD protegida con Microsoft Entra
Al compilar aplicaciones, a menudo interactúa con las API de back-end. A veces, estas API aún no están disponibles u otros equipos los están actualizando para cumplir los requisitos más recientes. Para evitar esperar, normalmente se crea una API ficticia que devuelve los datos que necesita. Aunque este enfoque le desbloquea, requiere que dedique tiempo a crear una API que finalmente reemplace por la real. Se complica aún más, cuando necesita proteger la API con Microsoft Entra. Para evitar perder el tiempo, puede usar dev Proxy para simular una API CRUD y acelerar el desarrollo.
CrudApiPlugin
Con , puede simular una API CRUD (Crear, Leer, Actualizar, Eliminar) con un almacén de datos en memoria. Con un archivo de configuración simple, puede definir qué direcciones URL admite la API ficticia y qué datos devuelve. El complemento también admite CORS para el uso entre dominios desde aplicaciones del lado cliente. El complemento también admite la autenticación de Microsoft Entra, por lo que puede proteger la API ficticia con Microsoft Entra e implementar el mismo flujo de autenticación para la aplicación que en el entorno de producción.
Escenario
Supongamos que va a crear una aplicación que permita a los usuarios administrar clientes. Para obtener los datos, debe llamar al /customers
punto de conexión de la API de back-end. La API está protegida con Microsoft Entra. Para evitar esperar a que el equipo back-end finalice su trabajo, decide usar el proxy de desarrollo para simular la API y devolver los datos que necesita.
Antes de empezar
Para empezar, cree una API CRUD simulada con los datos del cliente. Después de confirmar que la API funciona, puede protegerla con Microsoft Entra.
Ejemplo 1: Simular una API CRUD protegida con Microsoft Entra mediante un único ámbito
En el primer ejemplo, se protege toda la API con un único ámbito. Independientemente de si los usuarios necesitan obtener información sobre los clientes o actualizarlos, usan el mismo permiso.
En el customers-api.json
archivo, agregue información sobre Entra.
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/crudapiplugin.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "entra",
"entraAuthConfig": {
"audience": "https://api.contoso.com",
"issuer": "https://login.microsoftonline.com/contoso.com",
"scopes": ["api://contoso.com/user_impersonation"]
},
"actions": [
{
"action": "getAll"
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "create"
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
}
]
}
Al establecer la auth
propiedad entra
que especifique, que la API está protegida con Microsoft Entra. En la entraAuthConfig
propiedad , especifique los detalles de configuración. La audience
propiedad especifica la audiencia de la API, la issuer
propiedad especifica el emisor de los tokens y la scopes
propiedad especifica los ámbitos necesarios para acceder a la API. Dado que se define scopes
en el nivel raíz del archivo de API, todas las acciones requieren el mismo ámbito.
Si intenta llamar a la API sin un token con la audiencia, el emisor y los ámbitos especificados, obtendrá una 401 Unauthorized
respuesta.
Nota:
En esta fase, el proxy de desarrollo no valida el token. Solo comprueba si el token está presente y tiene la audiencia, el emisor y los ámbitos necesarios. Esto es conveniente durante el desarrollo temprano, cuando aún no tiene un registro real de aplicaciones de Microsoft Entra y no puede obtener un token real.
Ejemplo 2: Simulación de una API CRUD protegida con Microsoft Entra mediante ámbitos diferentes para diferentes acciones
En muchos casos, las distintas operaciones de API requieren permisos diferentes. Por ejemplo, obtener información sobre los clientes podría requerir un permiso diferente al de actualizarlos. En este ejemplo, se protegen diferentes acciones de API con distintos ámbitos.
Actualice el archivo de la customers-api.json
manera siguiente:
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/crudapiplugin.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "entra",
"entraAuthConfig": {
"audience": "https://api.contoso.com",
"issuer": "https://login.microsoftonline.com/contoso.com"
},
"actions": [
{
"action": "getAll",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.read"]
}
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.read"]
}
},
{
"action": "create",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
}
]
}
Esta vez, no se especifica en scopes
el nivel raíz del archivo de API. En su lugar, se especifican para cada acción. De este modo, puede proteger diferentes acciones con distintos ámbitos. Por ejemplo, la obtención de información sobre los clientes requiere el api://contoso.com/customer.read
ámbito, mientras que la actualización de los clientes requiere el api://contoso.com/customer.write
ámbito.
Validar tokens
El proxy de desarrollo permite simular una API CRUD protegida con Microsoft Entra y comprobar que usa un token válido. Validar el token es cómodo cuando tiene un registro de aplicación en Microsoft Entra, pero el equipo sigue creando la API. Permite probar con mayor precisión la aplicación.
Si desea que el proxy de desarrollo valide el token de acceso, a la entraAuthConfig
propiedad agregue la validateSigningKey
propiedad y establézcalo en true
:
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/crudapiplugin.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "entra",
"entraAuthConfig": {
"audience": "https://api.contoso.com",
"issuer": "https://login.microsoftonline.com/contoso.com",
"scopes": ["api://contoso.com/user_impersonation"],
"validateSigningKey": true
},
"actions": [
{
"action": "getAll"
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "create"
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
}
]
}
Si intenta llamar a la API con un token autoprocesado, obtendrá una 401 Unauthorized
respuesta. El proxy de desarrollo solo permite solicitudes con un token válido emitido por Microsoft Entra.
Paso siguiente
Obtenga más información sobre CrudApiPlugin.
Ejemplos
Consulte también los ejemplos relacionados del proxy de desarrollo: