MinimalPermissionsPlugin
Sprawdza, czy aplikacja używa minimalnych uprawnień do wywoływania interfejsów API. Używa informacji o interfejsie API z określonego folderu lokalnego.
Definicja wystąpienia wtyczki
{
"name": "MinimalPermissionsPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "minimalPermissionsPlugin"
}
Przykład konfiguracji
{
"minimalPermissionsPlugin": {
"apiSpecsFolderPath": "./api-specs"
}
}
Właściwości konfiguracji
Właściwości | opis | Wartość domyślna |
---|---|---|
apiSpecsFolderPath |
Względna lub bezwzględna ścieżka do folderu ze specyfikacjami interfejsu API | Brak |
Opcje wiersza polecenia
Brak
Uwagi
Wtyczka MinimalPermissionsPlugin
sprawdza, czy aplikacja używa minimalnych uprawnień do wywoływania interfejsów API. Aby sprawdzić uprawnienia, wtyczka używa informacji o interfejsach API znajdujących się w określonym folderze lokalnym.
Definiowanie uprawnień interfejsu API
Wtyczka MinimalPermissionsPlugin
obsługuje sprawdzanie uprawnień protokołu OAuth dla interfejsów API zabezpieczonych za pomocą protokołu OAuth. Wtyczka oblicza minimalne uprawnienia wymagane do wywołania interfejsów API używanych w aplikacji przy użyciu informacji z podanych specyfikacji interfejsu API. Następnie wtyczka porównuje uprawnienia używane w tokenie JSON Web Token (JWT) z minimalnymi wymaganymi zakresami wymaganymi dla zarejestrowanych żądań serwera proxy dewelopera.
Aby zdefiniować uprawnienia dla interfejsów API, uwzględnij je w definicji interfejsu API interfejsu OpenAPI. W poniższym przykładzie pokazano, jak zdefiniować uprawnienia dla interfejsu API w definicji interfejsu 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.22.0"
}
}
Odpowiednią częścią jest securitySchemes
sekcja, w której definiujesz zakresy OAuth używane przez interfejs API. Następnie dla każdej operacji należy uwzględnić wymagane zakresy w security
sekcji .