Udostępnij za pośrednictwem


MinimalPermissionsPlugin

Sprawdza, czy aplikacja używa minimalnych uprawnień do wywoływania interfejsów API. Używa informacji o interfejsie API z określonego folderu lokalnego.

Zrzut ekranu przedstawiający wiersz polecenia przedstawiający sprawdzanie, czy zarejestrowane żądania interfejsu API używają tokenów minimalnych uprawnień interfejsu API.

Definicja wystąpienia wtyczki

{
  "name": "MinimalPermissionsPlugin",
  "enabled": true,
  "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
  "configSection": "minimalPermissionsPlugin"
}

Przykład konfiguracji

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

Właściwości konfiguracji

Właściwości opis Wartość domyślna
apiSpecsFolderPath Względna lub bezwzględna ścieżka do folderu ze specyfikacjami interfejsu API Brak

Opcje wiersza polecenia

Brak

Uwagi

Wtyczka MinimalPermissionsPlugin sprawdza, czy aplikacja używa minimalnych uprawnień do wywoływania interfejsów API. Aby sprawdzić uprawnienia, wtyczka używa informacji o interfejsach API znajdujących się w określonym folderze lokalnym.

Definiowanie uprawnień interfejsu API

Wtyczka MinimalPermissionsPlugin obsługuje sprawdzanie uprawnień protokołu OAuth dla interfejsów API zabezpieczonych za pomocą protokołu OAuth. Wtyczka oblicza minimalne uprawnienia wymagane do wywołania interfejsów API używanych w aplikacji przy użyciu informacji z podanych specyfikacji interfejsu API. Następnie wtyczka porównuje uprawnienia używane w tokenie JSON Web Token (JWT) z minimalnymi wymaganymi zakresami wymaganymi dla zarejestrowanych żądań serwera proxy dewelopera.

Aby zdefiniować uprawnienia dla interfejsów API, uwzględnij je w definicji interfejsu API interfejsu OpenAPI. W poniższym przykładzie pokazano, jak zdefiniować uprawnienia dla interfejsu API w definicji interfejsu 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"
  }
}

Odpowiednią częścią jest securitySchemes sekcja, w której definiujesz zakresy OAuth używane przez interfejs API. Następnie dla każdej operacji należy uwzględnić wymagane zakresy w security sekcji .

Więcej informacji