Sdílet prostřednictvím


ApiCenterMinimalPermissionsPlugin

Zkontroluje, jestli aplikace používá k volání rozhraní API minimální oprávnění. Používá informace o rozhraní API ze zadané instance služby Azure API Center.

Snímek obrazovky příkazového řádku s kontrolou dev proxy serveru, jestli zaznamenané požadavky rozhraní API používají tokeny s minimálními oprávněními rozhraní API

Definice instance modulu plug-in

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

Příklad konfigurace

{
  "apiCenterMinimalPermissionsPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "resource-group-name",
    "serviceName": "apic-instance",
    "workspaceName": "default"
  }
}

Vlastnosti konfigurace

Vlastnost Popis Výchozí
resourceGroupName Název skupiny prostředků, ve které se nachází Azure API Center. Nic
serviceName Název instance Azure API Center, kterou by měl dev proxy server použít ke kontrole, jestli jsou zaregistrovaná rozhraní API použitá v aplikaci. Nic
subscriptionId ID předplatného Azure, ve kterém se nachází instance Azure API Center. Nic
workspace Název pracovního prostoru Azure API Center, který se má použít. default

Možnosti příkazového řádku

Nic

Poznámky

Modul ApiCenterMinimalPermissionsPlugin plug-in zkontroluje, jestli aplikace používá minimální oprávnění k volání rozhraní API. Ke kontrole oprávnění modul plug-in používá informace o rozhraních API zaregistrovaných v zadané instanci azure API Center.

Připojení ke službě Azure API Center

K připojení ke službě Azure API Center používá modul plug-in přihlašovací údaje Azure (v tomto pořadí):

  • Prostředí
  • Identita úloh
  • Spravovaná identita
  • Visual Studio
  • Visual Studio Code
  • Azure CLI
  • Azure PowerShell
  • Azure Developer CLI

Pokud se modulu plug-in nepodaří získat přístupový token pro přístup k Azure, zobrazí se chyba a Dev Proxy ho zakáže. Přihlaste se k Azure pomocí některého z těchto nástrojů a restartujte Dev Proxy a použijte modul ApiCenterMinimalPermissionsPlugin plug-in.

Pokud v kanálech CI/CD používáte Dev Proxy, můžete předat hodnoty pro subscriptionIdproměnné prostředí , resourceGroupNameserviceNamea workspaceName vlastnosti. Pokud chcete použít proměnné prostředí, předsadíte název hodnoty pomocí parametru @, například:

{
  "apiCenterMinimalPermissionsPlugin": {
    "subscriptionId": "@AZURE_SUBSCRIPTION_ID",
    "resourceGroupName": "@AZURE_RESOURCE_GROUP_NAME",
    "serviceName": "@AZURE_APIC_INSTANCE_NAME",
    "workspaceName": "@AZURE_APIC_WORKSPACE_NAME"
  }
}

V tomto příkladu modul ApiCenterMinimalPermissionsPlugin plug-in nastaví subscriptionId, resourceGroupName, serviceNamea workspaceName vlastnosti na hodnoty AZURE_SUBSCRIPTION_ID, AZURE_RESOURCE_GROUP_NAME, AZURE_APIC_INSTANCE_NAMEa AZURE_APIC_WORKSPACE_NAME proměnné prostředí, v uvedeném pořadí.

Definování oprávnění rozhraní API

Modul ApiCenterMinimalPermissionsPlugin plug-in podporuje kontrolu oprávnění OAuth pro rozhraní API zabezpečená pomocí OAuth zaregistrovaných ve službě Azure API Center. Modul plug-in vypočítá minimální oprávnění potřebná k volání rozhraní API používaných v aplikaci pomocí informací z centra API. Pak modul plug-in porovná oprávnění použitá v tokenu JSON Web Token (JWT) s minimálními požadovanými obory potřebnými pro požadavky, které dev proxy zaznamenal.

Pokud chcete definovat oprávnění pro vaše rozhraní API, zahrňte je do definice OpenAPI vašeho rozhraní API. Následující příklad ukazuje, jak definovat oprávnění pro rozhraní API v definici 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"
  }
}

Relevantní část je securitySchemes část, ve které definujete obory OAuth, které rozhraní API používá. Pro každou operaci pak do oddílu security zahrnete požadované obory.

Více informací