Partilhar via


PluginDePermissõesMínimas

Deteta as permissões mínimas necessárias para executar as operações de API especificadas. Usa informações de API da pasta local especificada.

Captura de tela de uma linha de comando mostrando o Proxy de Desenvolvimento verificando se as solicitações de API gravadas usam permissões mínimas de API de tokens.

Definição de instância de plug-in

{
  "name": "MinimalPermissionsPlugin",
  "enabled": true,
  "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
  "configSection": "minimalPermissionsPlugin"
}

Exemplo de configuração

{
  "minimalPermissionsPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/minimalpermissionsplugin.schema.json",
    "apiSpecsFolderPath": "./api-specs"
  }
}

Propriedades de configuração

Propriedade Descrição Predefinido
apiSpecsFolderPath Caminho relativo ou absoluto para a pasta com especificações da API Nenhuma

Opções de linha de comando

Nenhuma

Observações

O MinimalPermissionsPlugin plug-in verifica se o aplicativo usa permissões mínimas para chamar APIs. Para verificar as permissões, o plug-in usa informações sobre APIs localizadas na pasta local especificada.

Definir permissões de API

O MinimalPermissionsPlugin plug-in suporta a verificação de permissões OAuth para APIs protegidas com OAuth. O plug-in calcula as permissões mínimas necessárias para chamar as APIs usadas no aplicativo usando as informações das especificações de API fornecidas.

Para definir permissões para suas APIs, inclua-as na definição de OpenAPI de sua API. O exemplo a seguir mostra como definir permissões para uma API em uma definição 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"
  }
}

A parte relevante é a securitySchemes seção onde você define os escopos OAuth que a API usa. Em seguida, para cada operação, você inclui os escopos necessários na security seção .

Substituir variáveis nas especificações da API

Algumas especificações de API podem conter variáveis em URLs de servidor. O uso de variáveis é uma prática comum para acomodar diferentes ambientes (por exemplo, desenvolvimento, preparação, produção), versões de API ou locatários. Um URL com uma variável tem esta aparência:

openapi: 3.0.4
info:
  title: SharePoint REST API
  description: SharePoint REST API
  version: v1.0
servers:
  - url: https://{tenant}.sharepoint.com
    variables:
      tenant:
        default: contoso

O MinimalPermissionsPlugin plug-in suporta a substituição de variáveis no conteúdo das especificações da API. Para substituir uma variável, inicie o Dev Proxy com a --env opção e especifique o nome e o valor da variável. Por exemplo, para substituir a tenant variável por contoso, use o seguinte comando:

devproxy --env tenant=northwind

Este comando substitui a tenant variável nas especificações da API pelo valor northwind. O plug-in usa a URL substituída para verificar se o aplicativo usa permissões mínimas para chamar APIs.

Mais informações