Freigeben über


ApiCenterMinimalPermissionsPlugin

Überprüft, ob die App minimale Berechtigungen zum Aufrufen von APIs verwendet. Verwendet API-Informationen aus der angegebenen Azure API Center-Instanz.

Screenshot einer Eingabeaufforderung mit Der Dev Proxy-Überprüfung, ob die aufgezeichneten API-Anforderungen token minimale API-Berechtigungen verwenden.

Definition der Plug-In-Instanz

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

Konfigurationsbeispiel

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

Konfigurationseigenschaften

Eigenschaft BESCHREIBUNG Standard
resourceGroupName Name der Ressourcengruppe, in der sich das Azure API Center befindet. Keine
serviceName Name der Azure API Center-Instanz, die Dev Proxy verwenden soll, um zu überprüfen, ob die in der App verwendeten APIs registriert sind. Keine
subscriptionId ID des Azure-Abonnements, in dem sich die Azure API Center-Instanz befindet. Keine
workspace Name des zu verwendenden Azure API Center-Arbeitsbereichs. default

Befehlszeilenoptionen

Keine

Hinweise

Das ApiCenterMinimalPermissionsPlugin Plug-In überprüft, ob die App minimale Berechtigungen zum Aufrufen von APIs verwendet. Um Berechtigungen zu überprüfen, verwendet das Plug-In Informationen zu APIs, die in der angegebenen Azure API Center-Instanz registriert sind.

Herstellen einer Verbindung mit Dem Azure API Center

Um eine Verbindung mit Azure API Center herzustellen, verwendet das Plug-In Azure-Anmeldeinformationen (in dieser Reihenfolge):

  • Environment
  • Workload-Identität
  • Verwaltete Identität
  • Visual Studio
  • Visual Studio Code
  • Azure CLI
  • Azure PowerShell
  • Azure Developer CLI

Wenn das Plug-In kein Zugriffstoken für den Zugriff auf Azure erhält, wird ein Fehler angezeigt, und Der Dev-Proxy deaktiviert es. Melden Sie sich mit einem dieser Tools bei Azure an, und starten Sie Dev Proxy neu, um das ApiCenterMinimalPermissionsPlugin Plug-In zu verwenden.

Wenn Sie Dev Proxy in CI/CD-Pipelines verwenden, können Sie Werte für die subscriptionIdUmgebungsvariablen , resourceGroupName, und serviceNameworkspaceName Eigenschaften übergeben. Um Umgebungsvariablen zu verwenden, stellen Sie dem Namen des Werts ein @, z. B.:

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

In diesem Beispiel legt workspaceName subscriptionIdserviceNameresourceGroupNamedas ApiCenterMinimalPermissionsPlugin Plug-In die Werte der Variablen , , , und Umgebung auf die Werte der AZURE_SUBSCRIPTION_IDVariablen , AZURE_RESOURCE_GROUP_NAME, AZURE_APIC_INSTANCE_NAMEund AZURE_APIC_WORKSPACE_NAME Umgebung fest.

Definieren von API-Berechtigungen

Das ApiCenterMinimalPermissionsPlugin Plug-In unterstützt die Überprüfung von OAuth-Berechtigungen für APIs, die mit OAuth gesichert sind, das im Azure API Center registriert ist. Das Plug-In berechnet die minimalen Berechtigungen, die zum Aufrufen der in der App verwendeten APIs mithilfe der Informationen aus dem API Center erforderlich sind. Anschließend vergleicht das Plug-In die Berechtigungen, die im JSON-Webtoken (JWT) verwendet werden, mit den minimal erforderlichen Bereichen, die für die Anforderungen erforderlich sind, die von Dev Proxy aufgezeichnet wurden.

Um Berechtigungen für Ihre APIs zu definieren, fügen Sie sie in die OpenAPI-Definition Ihrer API ein. Das folgende Beispiel zeigt, wie Berechtigungen für eine API in einer OpenAPI-Definition definiert werden:

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

Der relevante Teil ist der securitySchemes Abschnitt, in dem Sie die von der API verwendeten OAuth-Bereiche definieren. Anschließend fügen Sie für jeden Vorgang die erforderlichen Bereiche in den security Abschnitt ein.

Weitere Informationen