Condividi tramite


Plugin di Autorizzazioni Minime

Rileva le autorizzazioni minime necessarie per eseguire le operazioni API specificate. Usa le informazioni sull'API dalla cartella locale specificata.

Screenshot di una riga di comando che mostra il controllo del proxy di sviluppo se le richieste API registrate usano token con autorizzazioni API minime.

Definizione dell'istanza del plug-in

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

Esempio di configurazione

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

Proprietà di configurazione

Proprietà Descrizione Predefinito
apiSpecsFolderPath Percorso relativo o assoluto della cartella con specifiche API Nessuno
schemeName Nome della definizione dello schema di sicurezza utilizzata per determinare le autorizzazioni minime. Se non specificato, il plug-in legge le informazioni dal primo schema oauth2 nella specifica Nessuno

Opzioni della riga di comando

Nessuno

Osservazioni:

Il MinimalPermissionsPlugin plug-in controlla se l'app usa autorizzazioni minime per chiamare le API. Per controllare le autorizzazioni, il plug-in usa informazioni sulle API che si trovano nella cartella locale specificata.

Definire le autorizzazioni API

Il MinimalPermissionsPlugin plug-in supporta il controllo delle autorizzazioni OAuth per le API protette con OAuth. Il plug-in calcola le autorizzazioni minime necessarie per chiamare le API usate nell'app usando le informazioni delle specifiche API fornite.

Per definire le autorizzazioni per le API, includerle nella definizione OpenAPI dell'API. L'esempio seguente illustra come definire le autorizzazioni per un'API in una definizione 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 è la securitySchemes sezione in cui si definiscono gli ambiti OAuth usati dall'API. Quindi, per ogni operazione, includere gli ambiti necessari nella security sezione .

Sostituire le variabili nelle specifiche DELL'API

Alcune specifiche api potrebbero contenere variabili negli URL del server. L'uso delle variabili è una pratica comune per gestire ambienti diversi (ad esempio, sviluppo, gestione temporanea, produzione), versioni api o tenant. Un URL con una variabile è simile al seguente:

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

Il plug-in MinimalPermissionsPlugin supporta la sostituzione delle variabili nel contenuto delle specifiche API. Per sostituire una variabile, avviare Dev Proxy con l'opzione --env e specificare il nome e il valore della variabile. Ad esempio, per sostituire la tenant variabile con contoso, usare il comando seguente:

devproxy --env tenant=northwind

Questo comando sostituisce la tenant variabile nelle specifiche API con il valore northwind. Il plug-in usa l'URL sostituito per verificare se l'app usa autorizzazioni minime per chiamare le API.

Ulteriori informazioni