Поделиться через


ApiCenterMinimalPermissionsPlugin

Проверяет, использует ли приложение минимальные разрешения для вызова API. Использует сведения API из указанного экземпляра Центра API Azure.

Снимок экрана: командная строка с проверкой прокси-сервера разработки, если записанные запросы API используют минимальные разрешения API маркеров.

Определение экземпляра подключаемого модуля

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

Пример конфигурации

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

Свойства конфигурации

Свойство Description По умолч.
resourceGroupName Имя группы ресурсов, в которой находится Центр API Azure. нет
serviceName Имя экземпляра Центра API Azure, который должен использовать прокси-сервер разработки, чтобы проверить, зарегистрированы ли API- интерфейсы, используемые в приложении. нет
subscriptionId Идентификатор подписки Azure, в которой находится экземпляр Центра API Azure. нет
workspace Имя рабочей области Центра API Azure для использования. default

Параметры командной строки

нет

Замечания

Подключаемый ApiCenterMinimalPermissionsPlugin модуль проверяет, использует ли приложение минимальные разрешения для вызова API. Чтобы проверить разрешения, подключаемый модуль использует сведения об API, зарегистрированных в указанном экземпляре Центра API Azure.

Подключение к Центру API Azure

Чтобы подключиться к Центру API Azure, подключаемый модуль использует учетные данные Azure (в этом порядке):

  • Среда
  • Удостоверение рабочей нагрузки
  • Управляемое удостоверение
  • Visual Studio
  • Visual Studio Code
  • Azure CLI
  • Azure PowerShell
  • Azure Developer CLI

Если подключаемый модуль не получает маркер доступа для доступа к Azure, отображается ошибка, а прокси-сервер разработки отключает его. Войдите в Azure с помощью любого из этих средств и перезапустите прокси-сервер разработки для использования подключаемого ApiCenterMinimalPermissionsPlugin модуля.

Если вы используете прокси-сервер разработки в конвейерах CI/CD, можно передать значения для subscriptionIdпеременных resourceGroupNameserviceNameсреды , а также workspaceName свойства. Чтобы использовать переменные среды, добавьте имя значения, @например:

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

В этом примере подключаемые ApiCenterMinimalPermissionsPlugin модули задают , resourceGroupNamesubscriptionIdserviceNameи workspaceName свойства для значений AZURE_SUBSCRIPTION_IDпеременных , AZURE_RESOURCE_GROUP_NAMEAZURE_APIC_INSTANCE_NAMEи AZURE_APIC_WORKSPACE_NAME среды соответственно.

Определение разрешений API

Подключаемый ApiCenterMinimalPermissionsPlugin модуль поддерживает проверку разрешений OAuth для API, защищенных с помощью OAuth, зарегистрированных в Центре API Azure. Подключаемый модуль вычисляет минимальные разрешения, необходимые для вызова API, используемых в приложении, с помощью сведений из Центра API. Затем подключаемый модуль сравнивает разрешения, используемые в маркере веб-маркера JSON (JWT) с минимальными необходимыми областями, необходимыми для запросов, записанных прокси-сервером разработки.

Чтобы определить разрешения для API, включите их в определение OpenAPI API. В следующем примере показано, как определить разрешения для API в определении 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"
  }
}

Соответствующая часть — это securitySchemes раздел, в котором определяются области OAuth, которые использует API. Затем для каждой операции необходимо включить необходимые области в security раздел.

Дополнительные сведения