Partager via


ApiCenterMinimalPermissionsPlugin

Vérifie si l’application utilise des autorisations minimales pour appeler des API. Utilise les informations d’API de l’instance du Centre d’API Azure spécifiée.

Capture d’écran d’une invite de commandes montrant la vérification du proxy de développement si les demandes d’API enregistrées utilisent des jetons d’autorisations d’API minimales.

Définition de l’instance de plug-in

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

Exemple de configuration

{
  "apiCenterMinimalPermissionsPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "resource-group-name",
    "serviceName": "apic-instance",
    "workspaceName": "default"
  }
}

Propriétés de configuration

Propriété Description Default
resourceGroupName Nom du groupe de ressources où se trouve le Centre d’API Azure. Aucun(e)
serviceName Nom de l’instance du Centre des API Azure que le proxy de développement doit utiliser pour vérifier si les API utilisées dans l’application sont inscrites. Aucun(e)
subscriptionId ID de l’abonnement Azure où se trouve l’instance du Centre des API Azure. Aucun(e)
workspace Nom de l’espace de travail Du Centre des API Azure à utiliser. default

Options de ligne de commande

Aucun(e)

Notes

Le ApiCenterMinimalPermissionsPlugin 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 inscrites dans l’instance du Centre d’API Azure spécifiée.

Se connecter au Centre des API Azure

Pour vous connecter au Centre des API Azure, le plug-in utilise les informations d’identification Azure (dans cet ordre) :

  • Environment
  • Identité de charge de travail
  • Identité managée
  • Visual Studio
  • Visual Studio Code
  • Azure CLI
  • Azure PowerShell
  • Azure Developer CLI

Si le plug-in ne parvient pas à obtenir un jeton d’accès pour accéder à Azure, il affiche une erreur et le proxy de développement le désactive. Connectez-vous à Azure à l’aide de l’un de ces outils et redémarrez le proxy de développement pour utiliser le ApiCenterMinimalPermissionsPlugin plug-in.

Si vous utilisez le proxy de développement dans les pipelines CI/CD, vous pouvez transmettre des valeurs pour les subscriptionIdvariables d’environnement, resourceGroupNameserviceNameet workspaceName les propriétés. Pour utiliser des variables d’environnement, ajoutez le nom de la valeur avec un @, par exemple :

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

Dans cet exemple, le ApiCenterMinimalPermissionsPlugin plug-in définit subscriptionId, resourceGroupName, serviceNameet workspaceName les propriétés sur les valeurs des AZURE_SUBSCRIPTION_IDvariables d’environnement AZURE_RESOURCE_GROUP_NAME, AZURE_APIC_INSTANCE_NAMEet AZURE_APIC_WORKSPACE_NAME les variables d’environnement, respectivement.

Définir des autorisations d’API

Le ApiCenterMinimalPermissionsPlugin plug-in prend en charge la vérification des autorisations OAuth pour les API sécurisées avec OAuth inscrite dans le Centre des API Azure. Le plug-in calcule les autorisations minimales requises pour appeler les API utilisées dans l’application à l’aide des informations du Centre d’API. 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.19.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.

Plus d’informations