Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Sprawdza, czy aplikacja używa minimalnych uprawnień do wywoływania interfejsów API. Używa informacji o interfejsie API z określonego wystąpienia centrum interfejsu API platformy Azure.
Przykład konfiguracji
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
"plugins": [
{
"name": "ApiCenterMinimalPermissionsPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "apiCenterMinimalPermissionsPlugin"
}
],
"apiCenterMinimalPermissionsPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/apicenterminimalpermissionsplugin.schema.json",
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"resourceGroupName": "resource-group-name",
"serviceName": "apic-instance",
"workspaceName": "default",
"permissionsToExclude": [
"profile",
"openid",
"offline_access",
"email"
]
}
}
Właściwości konfiguracji
| Właściwości | opis | Wartość domyślna |
|---|---|---|
permissionsToExclude |
Zakresy, które mają być ignorowane i nie są uwzględniane w raporcie. | profile openid offline_access email |
resourceGroupName |
Nazwa grupy zasobów, w której znajduje się Centrum interfejsów API platformy Azure. | Brak |
serviceName |
Nazwa wystąpienia centrum interfejsu API platformy Azure, którego serwer proxy dewelopera powinien użyć do sprawdzenia, czy interfejsy API używane w aplikacji są zarejestrowane. | Brak |
subscriptionId |
Identyfikator subskrypcji platformy Azure, w której znajduje się wystąpienie centrum interfejsu API platformy Azure. | Brak |
workspaceName |
Nazwa obszaru roboczego Centrum interfejsu API platformy Azure do użycia. | default |
schemeName |
Nazwa definicji schematu zabezpieczeń używanej do określania minimalnych uprawnień. Jeśli nie zostanie określony, wtyczka odczytuje informacje z pierwszego schematu oauth2 w specyfikacji | Brak |
Opcje wiersza polecenia
Brak
Uwagi
Wtyczka ApiCenterMinimalPermissionsPlugin sprawdza, czy aplikacja używa minimalnych uprawnień do wywoływania interfejsów API. Aby sprawdzić uprawnienia, wtyczka używa informacji o interfejsach API zarejestrowanych w określonym wystąpieniu centrum interfejsów API platformy Azure.
Nawiązywanie połączenia z centrum interfejsów API platformy Azure
Aby nawiązać połączenie z centrum interfejsów API platformy Azure, wtyczka używa poświadczeń platformy Azure (w tej kolejności):
- Środowisko
- Tożsamość obciążenia
- Tożsamość zarządzana
- Visual Studio
- Visual Studio Code
- Interfejs wiersza polecenia platformy Azure
- Azure PowerShell
- Azure Developer CLI
Jeśli wtyczka nie może uzyskać tokenu dostępu w celu uzyskania dostępu do platformy Azure, zostanie wyświetlony błąd i serwer proxy dewelopera go wyłączy. Zaloguj się do platformy Azure przy użyciu jednego z tych narzędzi i uruchom ponownie serwer proxy deweloperów, aby użyć wtyczki ApiCenterMinimalPermissionsPlugin .
Jeśli używasz serwera proxy deweloperskiego w potokach ciągłej subscriptionIdintegracji/ciągłego wdrażania, możesz przekazać wartości dla właściwości , resourceGroupName, serviceNamei workspaceName jako zmiennych środowiskowych. Aby użyć zmiennych środowiskowych, należy wstępnie utworzyć nazwę wartości z wartością @, na przykład:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
"plugins": [
{
"name": "ApiCenterMinimalPermissionsPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "apiCenterMinimalPermissionsPlugin"
}
],
"apiCenterMinimalPermissionsPlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/apicenterminimalpermissionsplugin.schema.json",
"subscriptionId": "@AZURE_SUBSCRIPTION_ID",
"resourceGroupName": "@AZURE_RESOURCE_GROUP_NAME",
"serviceName": "@AZURE_APIC_INSTANCE_NAME",
"workspaceName": "@AZURE_APIC_WORKSPACE_NAME"
}
}
W tym przykładzie wtyczka ApiCenterMinimalPermissionsPlugin ustawia subscriptionIdodpowiednio wartości resourceGroupNameserviceNameworkspaceNameAZURE_SUBSCRIPTION_IDzmiennych środowiskowych , AZURE_RESOURCE_GROUP_NAMEAZURE_APIC_INSTANCE_NAMEAZURE_APIC_WORKSPACE_NAME , i .
Jeśli zmienna środowiskowa, do których odwołuje się konfiguracja, nie jest ustawiona lub jest pusta, wtyczka wyświetla błąd, na przykład Environment variable AZURE_SUBSCRIPTION_ID referenced by subscriptionId isn't set., a serwer proxy deweloperski go wyłącza. Ustaw zmienną środowiskową i uruchom ponownie serwer proxy dewelopera ApiCenterMinimalPermissionsPlugin , aby użyć wtyczki.
Definiowanie uprawnień interfejsu API
Wtyczka ApiCenterMinimalPermissionsPlugin obsługuje sprawdzanie uprawnień protokołu OAuth dla interfejsów API zabezpieczonych za pomocą protokołu OAuth zarejestrowanego w centrum interfejsów API platformy Azure. Wtyczka oblicza minimalne uprawnienia wymagane do wywołania interfejsów API używanych w aplikacji przy użyciu informacji z Centrum 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.
Wtyczka ignoruje zakresy wymienione w pliku permissionsToExclude i nie zgłasza ich jako nadmierne uprawnienia. Domyślnie wtyczka wyklucza zakresy profileOpenID Connect , openid, offline_accessi email. Raport zawiera listę uprawnień wykluczonych z analizy przez wtyczkę.
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",
"properties": {}
}
}
},
"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.27.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 .
Więcej informacji
- Uwierzytelnianie i autoryzacja interfejsu OpenAPI
- Obiekt schematu zabezpieczeń specyfikacji interfejsu OpenAPI