Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Compare les autorisations utilisées dans le jeton JWT envoyé aux API par rapport aux étendues minimales requises pour les demandes enregistrées par le proxy et indique la différence.
Définition de l’instance de plug-in
{
"name": "MinimalPermissionsGuidancePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "minimalPermissionsGuidancePlugin"
}
Exemple de configuration
{
"minimalPermissionsGuidancePlugin": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/minimalpermissionsguidanceplugin.schema.json",
"apiSpecsFolderPath": "./api-specs",
"permissionsToExclude": [
"profile",
"openid",
"offline_access",
"email"
]
}
}
Propriétés de configuration
| Propriété | Descriptif | Par défaut |
|---|---|---|
apiSpecsFolderPath |
Chemin d’accès relatif ou absolu au dossier avec des spécifications d’API | Aucun(e) |
permissionsToExclude |
Étendues à ignorer et à ne pas inclure dans le rapport. | profile openid offline_access email |
schemeName |
Nom de la définition du schéma de sécurité utilisé pour déterminer les autorisations minimales. S’il n’est pas spécifié, le plug-in lit les informations du premier schéma oauth2 dans la spécification | Aucun(e) |
Options de ligne de commande
Aucun(e)
Remarques
Le MinimalPermissionsGuidancePlugin plug-in vérifie si l’application utilise des autorisations minimales pour appeler des API. Pour vérifier les autorisations, le plug-in utilise des informations sur les API situées dans le dossier local spécifié.
Définir des autorisations d’API
Le MinimalPermissionsGuidancePlugin plug-in prend en charge la vérification des autorisations OAuth pour les API sécurisées avec OAuth. Le plug-in calcule les autorisations minimales requises pour appeler les API utilisées dans l’application à l’aide des informations des spécifications d’API fournies. Ensuite, le plug-in compare les autorisations utilisées dans le jeton JWT (JSON Web Token) par rapport aux étendues minimales requises pour les demandes enregistrées par le proxy de développement.
Pour définir des autorisations pour vos API, incluez-les dans la définition OpenAPI de votre API. L’exemple suivant montre comment définir des autorisations pour une API dans une définition 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"
}
}
La partie pertinente est la securitySchemes section dans laquelle vous définissez les étendues OAuth utilisées par l’API. Ensuite, pour chaque opération, vous incluez les étendues requises dans la security section.
Remplacer les variables dans les spécifications d’API
Certaines spécifications d’API peuvent contenir des variables dans les URL du serveur. L’utilisation de variables est une pratique courante pour prendre en charge différents environnements (par exemple, développement, préproduction, production), versions d’API ou locataires. Une URL avec une variable ressemble à ceci :
openapi: 3.0.4
info:
title: SharePoint REST API
description: SharePoint REST API
version: v1.0
servers:
- url: https://{tenant}.sharepoint.com
variables:
tenant:
default: contoso
Le MinimalPermissionsGuidancePlugin plug-in prend en charge le remplacement des variables dans le contenu des spécifications de l’API. Pour remplacer une variable, démarrez le proxy de développement par l’option --env et spécifiez le nom et la valeur de la variable. Par exemple, pour remplacer la tenant variable contosopar , utilisez la commande suivante :
devproxy --env tenant=northwind
Cette commande remplace la tenant variable dans les spécifications de l’API par la valeur northwind. Le plug-in utilise l’URL remplacée pour vérifier si l’application utilise des autorisations minimales pour appeler des API.