Compartir a través de


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.

Captura de pantalla de un símbolo del sistema que muestra la comprobación del proxy de desarrollo si las solicitudes de API grabadas usan tokens mínimos de permisos de API.

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 subscriptionIdpropiedades , resourceGroupName, serviceNamey 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 subscriptionIdlas propiedades , resourceGroupName, serviceNamey workspaceName en los valores de las AZURE_SUBSCRIPTION_IDvariables de entorno , AZURE_RESOURCE_GROUP_NAME, AZURE_APIC_INSTANCE_NAMEy 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 .

Más información