Compartir a través de


MinimalPermissionsPlugin

Comprueba si la aplicación usa permisos mínimos para llamar a las API. Usa información de API de la carpeta local especificada.

Captura de pantalla de una línea de comandos 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": "MinimalPermissionsPlugin",
  "enabled": true,
  "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
  "configSection": "minimalPermissionsPlugin"
}

Ejemplo de configuración

{
  "minimalPermissionsPlugin": {
    "apiSpecsFolderPath": "./api-specs"
  }
}

Propiedades de configuración

Propiedad Descripción Valor predeterminado
apiSpecsFolderPath Ruta de acceso relativa o absoluta a la carpeta con especificaciones de API Ninguno

Opciones de línea de comandos

Ninguno

Comentarios

El MinimalPermissionsPlugin 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 ubicadas en la carpeta local especificada.

Definición de permisos de API

El MinimalPermissionsPlugin complemento admite la comprobación de permisos de OAuth para las API protegidas con OAuth. El complemento calcula los permisos mínimos necesarios para llamar a las API usadas en la aplicación mediante la información de las especificaciones de API proporcionadas. 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.22.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