다음을 통해 공유


MinimalPermissionsPlugin

앱이 최소 사용 권한을 사용하여 API를 호출하는지 확인합니다. 지정된 로컬 폴더의 API 정보를 사용합니다.

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

플러그 인 인스턴스 정의

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

구성 예

{
  "minimalPermissionsPlugin": {
    "apiSpecsFolderPath": "./api-specs"
  }
}

구성 속성

속성 설명 기본값
apiSpecsFolderPath API 사양이 있는 폴더에 대한 상대 또는 절대 경로 None

명령줄 옵션

None

설명

플러그 인은 MinimalPermissionsPlugin 앱이 최소 사용 권한을 사용하여 API를 호출하는지 확인합니다. 사용 권한을 확인하기 위해 플러그 인은 지정된 로컬 폴더에 있는 API에 대한 정보를 사용합니다.

API 권한 정의

플러그 인은 MinimalPermissionsPlugin 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.22.0"
  }
}

관련 부분은 securitySchemes API에서 사용하는 OAuth 범위를 정의하는 섹션입니다. 그런 다음 각 작업에 필요한 범위를 섹션에 security 포함합니다.

자세한 정보