ApiCenterMinimalPermissionsPlugin
Comprueba si la aplicación usa permisos mínimos para llamar a las API. Usa información de API de la instancia de Azure API Center especificada.
Definición de instancia del complemento
{
"name": "ApiCenterMinimalPermissionsPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "apiCenterMinimalPermissionsPlugin"
}
Ejemplo de configuración
{
"apiCenterMinimalPermissionsPlugin": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"resourceGroupName": "resource-group-name",
"serviceName": "apic-instance",
"workspaceName": "default"
}
}
Propiedades de configuración
Propiedad | Descripción | Valor predeterminado |
---|---|---|
resourceGroupName |
Nombre del grupo de recursos donde se encuentra el Centro de API de Azure. | Ninguno |
serviceName |
Nombre de la instancia del Centro de API de Azure que el proxy de desarrollo debe usar para comprobar si las API usadas en la aplicación están registradas. | Ninguno |
subscriptionId |
Identificador de la suscripción de Azure donde se encuentra la instancia del Centro de API de Azure. | Ninguno |
workspace |
Nombre del área de trabajo del Centro de API de Azure que se va a usar. | default |
Opciones de línea de comandos
Ninguno
Comentarios
El ApiCenterMinimalPermissionsPlugin
complemento comprueba si la aplicación usa permisos mínimos para llamar a las API. Para comprobar los permisos, el complemento usa información sobre las API registradas en la instancia especificada del Centro de API de Azure.
Conexión al Centro de API de Azure
Para conectarse al Centro de API de Azure, el complemento usa credenciales de Azure (en este orden):
- Entorno
- Identidad de carga de trabajo
- Identidad administrada
- Visual Studio
- Visual Studio Code
- Azure CLI
- Azure PowerShell
- CLI de desarrollo de Azure
Si el complemento no puede obtener un token de acceso para acceder a Azure, muestra un error y dev Proxy lo deshabilita. Inicie sesión en Azure con cualquiera de estas herramientas y reinicie Dev Proxy para usar el ApiCenterMinimalPermissionsPlugin
complemento.
Si usa dev Proxy en canalizaciones de CI/CD, puede pasar valores para las subscriptionId
propiedades , resourceGroupName
, serviceName
y workspaceName
como variables de entorno. Para usar variables de entorno, anteponga el nombre del valor con , @
por ejemplo:
{
"apiCenterMinimalPermissionsPlugin": {
"subscriptionId": "@AZURE_SUBSCRIPTION_ID",
"resourceGroupName": "@AZURE_RESOURCE_GROUP_NAME",
"serviceName": "@AZURE_APIC_INSTANCE_NAME",
"workspaceName": "@AZURE_APIC_WORKSPACE_NAME"
}
}
En este ejemplo, el ApiCenterMinimalPermissionsPlugin
complemento establece subscriptionId
las propiedades , resourceGroupName
, serviceName
y workspaceName
en los valores de las AZURE_SUBSCRIPTION_ID
variables de entorno , AZURE_RESOURCE_GROUP_NAME
, AZURE_APIC_INSTANCE_NAME
y AZURE_APIC_WORKSPACE_NAME
, respectivamente.
Definición de permisos de API
El ApiCenterMinimalPermissionsPlugin
complemento admite la comprobación de los permisos de OAuth para las API protegidas con OAuth registrados en el Centro de API de Azure. El complemento calcula los permisos mínimos necesarios para llamar a las API que se usan en la aplicación mediante la información del Centro de API. A continuación, el complemento compara los permisos usados en el token json Web Token (JWT) con los ámbitos mínimos necesarios para las solicitudes que registró el proxy de desarrollo.
Para definir permisos para las API, inclúyelos en la definición de OpenAPI de la API. En el ejemplo siguiente se muestra cómo definir permisos para una API en una definición de OpenAPI:
{
"openapi": "3.0.1",
"info": {
"title": "Northwind API",
"description": "Northwind API",
"version": "v1.0"
},
"servers": [
{
"url": "https://api.northwind.com"
}
],
"components": {
"securitySchemes": {
"OAuth2": {
"type": "oauth2",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize",
"tokenUrl": "https://login.microsoftonline.com/common/oauth2/token",
"scopes": {
"customer.read": "Grants access to ready customer info",
"customer.readwrite": "Grants access to read and write customer info"
}
}
}
}
},
"schemas": {
"Customer": {
"type": "object",
// [...] trimmed for brevity
}
}
},
"paths": {
"/customers/{customers-id}": {
"description": "Provides operations to manage a customer",
"get": {
"summary": "Get customer by ID",
"operationId": "getCustomerById",
"security": [
{
"OAuth2": [
"customer.read"
]
},
{
"OAuth2": [
"customer.readwrite"
]
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json; charset=utf-8": {
"schema": {
"$ref": "#/components/schemas/Customer"
}
}
}
}
}
},
"patch": {
"summary": "Update customer by ID",
"operationId": "updateCustomerById",
"security": [
{
"OAuth2": [
"customer.readwrite"
]
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Customer"
}
}
}
},
"responses": {
"204": {
"description": "No Content"
}
}
},
"parameters": [
{
"name": "customers-id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
]
}
},
"x-ms-generated-by": {
"toolName": "Dev Proxy",
"toolVersion": "0.19.0"
}
}
La parte pertinente es la securitySchemes
sección, donde se definen los ámbitos de OAuth que usa la API. A continuación, para cada operación, se incluyen los ámbitos necesarios en la security
sección .