Dela via


ApiCenterMinimalPermissionsPlugin

Kontrollerar om appen använder minimal behörighet för att anropa API:er. Använder API-information från den angivna Azure API Center-instansen.

Skärmbild av en kommandotolk som visar Dev Proxy som kontrollerar om registrerade API-begäranden använder tokens minimala API-behörigheter.

Definition av plugin-instans

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

Konfigurationsexempel

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

Konfigurationsegenskaper

Property beskrivning Standard
resourceGroupName Namnet på resursgruppen där Azure API Center finns. Ingen
serviceName Namnet på den Azure API Center-instans som Dev Proxy ska använda för att kontrollera om DE API:er som används i appen är registrerade. Ingen
subscriptionId ID för Azure-prenumerationen där Azure API Center-instansen finns. Ingen
workspace Namnet på den Azure API Center-arbetsyta som ska användas. default

Kommandoradsalternativ

Ingen

Kommentarer

Plugin-programmet ApiCenterMinimalPermissionsPlugin kontrollerar om appen använder minimal behörighet för att anropa API:er. För att kontrollera behörigheter använder plugin-programmet information om API:er som är registrerade i den angivna Azure API Center-instansen.

Ansluta till Azure API Center

För att ansluta till Azure API Center använder plugin-programmet Azure-autentiseringsuppgifter (i den här ordningen):

  • Environment
  • Arbetsbelastningsidentitet
  • Hanterad identitet
  • Visual Studio
  • Visual Studio-koden
  • Azure CLI
  • Azure PowerShell
  • Azure Developer CLI

Om plugin-programmet inte hämtar en åtkomsttoken för åtkomst till Azure visas ett fel och Dev Proxy inaktiverar det. Logga in på Azure med något av dessa verktyg och starta om Dev Proxy för att använda plugin-programmet ApiCenterMinimalPermissionsPlugin .

Om du använder Dev Proxy i CI/CD-pipelines kan du skicka värden för subscriptionIdegenskaperna , resourceGroupName, serviceNameoch workspaceName som miljövariabler. Om du vill använda miljövariabler förbereder du namnet på värdet med ett @, till exempel:

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

I det här exemplet ApiCenterMinimalPermissionsPlugin anger plugin-programmet subscriptionIdegenskaperna , resourceGroupName, serviceNameoch workspaceName till värdena AZURE_SUBSCRIPTION_IDför miljövariablerna , AZURE_RESOURCE_GROUP_NAME, AZURE_APIC_INSTANCE_NAMErespektive AZURE_APIC_WORKSPACE_NAME .

Definiera API-behörigheter

Plugin-programmet ApiCenterMinimalPermissionsPlugin stöder kontroll av OAuth-behörigheter för API:er som skyddas med OAuth registrerat i Azure API Center. Plugin-programmet beräknar de minimala behörigheter som krävs för att anropa de API:er som används i appen med hjälp av informationen från API Center. Sedan jämför plugin-programmet de behörigheter som används i JSON-webbtoken (JWT) med de minsta nödvändiga omfång som krävs för de begäranden som Dev Proxy registrerade.

Om du vill definiera behörigheter för dina API:er tar du med dem i OpenAPI-definitionen för ditt API. I följande exempel visas hur du definierar behörigheter för ett API i en OpenAPI-definition:

{
  "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"
  }
}

Den relevanta delen är avsnittet securitySchemes där du definierar de OAuth-omfång som API:et använder. För varje åtgärd inkluderar du sedan de nödvändiga omfången i avsnittet security .

Mer information