다음을 통해 공유


ApiCenterMinimalPermissionsPlugin

앱이 최소 사용 권한을 사용하여 API를 호출하는지 확인합니다. 지정된 Azure API Center 인스턴스의 API 정보를 사용합니다.

기록된 API 요청이 토큰을 최소 API 권한으로 사용하는지 여부를 확인하는 개발자 프록시를 보여 주는 명령 프롬프트의 스크린샷

플러그 인 인스턴스 정의

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

구성 예

{
  "apiCenterMinimalPermissionsPlugin": {
    "subscriptionId": "cdae2297-7aa6-4195-bbb1-dcd89153cc72",
    "resourceGroupName": "resource-group-name",
    "serviceName": "apic-instance",
    "workspaceName": "default"
  }
}

구성 속성

속성 설명 기본값
resourceGroupName Azure API 센터가 있는 리소스 그룹의 이름입니다. None
serviceName 개발자 프록시가 앱에서 사용되는 API가 등록되어 있는지 확인하는 데 사용해야 하는 Azure API 센터 인스턴스의 이름입니다. None
subscriptionId Azure API Center 인스턴스가 있는 Azure 구독의 ID입니다. None
workspace 사용할 Azure API Center 작업 영역의 이름입니다. default

명령줄 옵션

None

설명

플러그 인은 ApiCenterMinimalPermissionsPlugin 앱이 최소 사용 권한을 사용하여 API를 호출하는지 확인합니다. 사용 권한을 확인하기 위해 플러그 인은 지정된 Azure API 센터 인스턴스에 등록된 API에 대한 정보를 사용합니다.

Azure API 센터에 연결

Azure API Center에 연결하기 위해 플러그 인은 Azure 자격 증명(이 순서대로)을 사용합니다.

  • 환경
  • 워크로드 ID
  • 관리 ID
  • Visual Studio
  • Visual Studio Code
  • Azure CLI
  • Azure PowerShell
  • Azure Developer CLI

플러그 인이 Azure에 액세스하기 위한 액세스 토큰을 가져오지 못하면 오류가 표시되고 개발자 프록시가 이를 사용하지 않도록 설정합니다. 이러한 도구 중 하나를 사용하여 Azure에 로그인하고 개발자 프록시를 다시 시작하여 플러그 인을 ApiCenterMinimalPermissionsPlugin 사용합니다.

CI/CD 파이프라인에서 개발 프록시를 사용하는 경우 , resourceGroupNameserviceNameworkspaceName 속성에 subscriptionId대한 값을 환경 변수로 전달할 수 있습니다. 환경 변수를 사용하려면 값 @의 이름 앞에 다음을 추가합니다. 예를 들면 다음과 같습니다.

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

이 예제 ApiCenterMinimalPermissionsPlugin 에서 플러그 인은 각각 , resourceGroupName, serviceNameworkspaceName 환경 변수의 AZURE_APIC_INSTANCE_NAMEAZURE_SUBSCRIPTION_IDAZURE_RESOURCE_GROUP_NAME값으로 , 및 AZURE_APIC_WORKSPACE_NAME 속성을 설정합니다.subscriptionId

API 권한 정의

플러그 인은 ApiCenterMinimalPermissionsPlugin Azure API 센터에 등록된 OAuth로 보호되는 API에 대한 OAuth 권한 확인을 지원합니다. 플러그 인은 API 센터의 정보를 사용하여 앱에서 사용되는 API를 호출하는 데 필요한 최소한의 권한을 계산합니다. 그런 다음 플러그 인은 JWT(JSON 웹 토큰) 토큰에 사용된 사용 권한을 개발자 프록시가 기록한 요청에 필요한 최소 필수 범위와 비교합니다.

API에 대한 권한을 정의하려면 API의 OpenAPI 정의에 해당 권한을 포함합니다. 다음 예제에서는 OpenAPI 정의에서 API에 대한 권한을 정의하는 방법을 보여 줍니다.

{
  "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 API에서 사용하는 OAuth 범위를 정의하는 섹션입니다. 그런 다음 각 작업에 필요한 범위를 섹션에 security 포함합니다.

자세한 정보