Jeton api oauth2
Authentification et autorisation des API dans Gestion des API
Azure S’APPLIQUE À : Tous les niveaux de Gestion des API
Cet article est une introduction à un ensemble riche et flexible de fonctionnalités de Gestion des API qui vous aident à sécuriser l’accès des utilisateurs aux API managées.
L’authentification et l’autorisation des API dans Gestion des API impliquent la sécurisation de la communication de bout en bout des applications clientes vers la passerelle de gestion des API et via les API principales. Dans de nombreux environnements clients, OAuth 2.0 est le protocole d’autorisation d’API préféré. Gestion des API prend en charge l’autorisation OAuth 2.0 entre le client et la passerelle Gestion des API, entre la passerelle et l’API principale, ou les deux indépendamment.
Gestion des API prend en charge d’autres mécanismes d’authentification et d’autorisation côté client et côté service qui complètent OAuth 2.0 ou qui sont utiles lorsque OAuth 2.0 l’autorisation pour les API n’est pas possible. Le choix parmi ces options dépend de la maturité de l’environnement d’API de votre organisation, de vos exigences en matière de sécurité et de conformité, ainsi que de l’approche de votre organisation pour atténuer les menaces d’API courantes.
Remarque
D’autres composants de Gestion des API disposent de mécanismes distincts pour sécuriser et restreindre l’accès des utilisateurs :
- Pour gérer l’instance de Gestion des API via le plan de contrôle Azure, la Gestion des API s’appuie sur Microsoft Entra ID et le contrôle d’accès en fonction du rôle (RBAC) Azure.
- Le portail des développeurs Gestion des API prend en charge plusieurs options pour faciliter l’inscription et la connexion sécurisées des utilisateurs.
Authentification ou autorisation
Voici une brève explication de l’authentification et de l’autorisation dans le contexte de l’accès aux API :
-
Authentification - Le processus de vérification de l’identité d’un utilisateur ou d’une application qui accède à l’API. L’authentification peut se faire par le biais d’informations d’identification telles qu’un nom d’utilisateur et un mot de passe, d’un certificat, de l’authentification unique (SSO) ou d’autres méthodes.
-
Autorisation : processus permettant de déterminer si un utilisateur ou une application est autorisé à accéder à une API particulière, souvent par le biais d’un protocole basé sur des jetons tel que OAuth 2.0.
Remarque
Pour compléter l’authentification et l’autorisation, l’accès aux API doit également être sécurisé à l’aide de TLS afin de protéger les informations d’identification ou les jetons utilisés pour l’authentification ou l’autorisation.
Concepts d’OAuth 2.0 OAuth 2.0
est un cadre d’autorisation standard largement utilisé pour sécuriser l’accès à des ressources telles que les API Web. OAuth 2.0 limite les actions sur lesquelles une application cliente peut effectuer ressources pour le compte de l’utilisateur, sans jamais partager ses identifiants. Bien qu’OAuth 2.0 ne soit pas un protocole d’authentification, il est souvent utilisé avec OpenID Connect (OIDC), qui étend OAuth 2.0 en fournissant des fonctionnalités d’authentification utilisateur et d’authentification unique.
Flux OAuth
Que se passe-t-il lorsqu’une application cliente appelle une API avec une requête sécurisée à l’aide de TLS et OAuth 2.0 ? Voici un exemple abrégé de flux :
-
Le client (l’application appelante ou le porteur ) s’authentifie à l’aide d’informations d’identification auprès d’un fournisseur d’identité .
-
Le client obtient un jeton d’accès limité dans le temps (JSON Web Token, ou JWT) à partir du serveur d’autorisation du fournisseur d’identité.
Le fournisseur d’identité (par exemple, Microsoft Entra ID) est l’émetteur du jeton et le jeton inclut un audience claim qui autorise l’accès à un serveur de ressources (par exemple, à une API backend ou à la passerelle de gestion des API elle-même).
-
Le client appelle l’API et présente le jeton d’accès, par exemple, dans un en-tête d’autorisation.
-
Le serveur de ressources valide le jeton d’accès. La validation est un processus complexe qui comprend une vérification que l’émetteur et l’audience affirment contenir des valeurs attendues.
-
Sur la base des critères de validation du jeton, l’accès aux ressources de l’API backend est ensuite accordé.
Selon le type d’application cliente et les scénarios, différents flux d’autorisation sont nécessaires pour demander et gérer les jetons. Par exemple, le flux de code d’autorisation et le type d’octroi sont couramment utilisés dans les applications qui appellent des API web. Pour en savoir plus sur les flux OAuth et les scénarios d’application dans Microsoft Entra ID.
Scénarios d’autorisation OAuth 2.0 dans Gestion des API
Scénario 1 : l’application cliente autorise directement le backend
Un scénario d’autorisation courant est lorsque l’application appelante demande l’accès directement à l’API backend et présente un jeton OAuth 2.0 dans un en-tête d’autorisation à la passerelle. Gestion des API Azure agit alors comme un proxy « transparent » entre l’appelant et l’API principale, et transmet le jeton inchangé au serveur principal. L’étendue du jeton d’accès s’étend entre l’application appelante et l’API principale.
L’image suivante montre un exemple où Microsoft Entra ID est le fournisseur d’autorisation. L’application cliente peut être une application monopage (SPA).
Bien que le jeton d’accès envoyé avec la requête HTTP soit destiné à l’API backend, la gestion des API permet toujours pour une approche de défense en profondeur. Par exemple, configurez des stratégies pour valider le JWT, en rejetant les demandes qui arrivent sans jeton ou un jeton qui n’est pas valide pour l’API backend prévue. Vous pouvez également configurer Gestion des API pour vérifier d’autres revendications d’intérêt extraites du jeton.
Remarque
Si vous sécurisez une API exposée via Gestion des API Azure avec OAuth 2.0 de cette manière, vous pouvez configurer Gestion des API pour générer un jeton valide à des fins de test pour le compte d’un utilisateur de la console de test du portail Azure ou du portail des développeurs. Vous devez ajouter un serveur OAuth 2.0 à votre instance de gestion des API et activer les paramètres d’autorisation OAuth 2.0 dans l’API. Pour plus d’informations, consultez Comment autoriser la console de test du portail des développeurs en configurant l’autorisation utilisateur OAuth 2.0.
Exemple :
Conseil
Dans le cas particulier où l’accès à l’API est protégé par Microsoft ID Entra , vous pouvez configurer la stratégie validate-azure-ad-token pour la validation du jeton.
Scénario 2 : l’application cliente autorise la gestion des API
Dans ce scénario, le service Gestion des API agit pour le compte de l’API et l’application appelante demande l’accès à l’instance de gestion des API. L’étendue du jeton d’accès s’étend entre l’application appelante et la passerelle de gestion des API. Dans Gestion des API, configurez une stratégie (validate-jwt ou validate-azure-ad-token) pour valider le jeton avant que la passerelle ne transmette la demande au serveur principal. Un mécanisme distinct sécurise généralement la connexion entre la passerelle et l’API principale.
Dans l’exemple suivant, Microsoft Entra ID est à nouveau le fournisseur d’autorisation, et l’authentification TLS mutuelle (mTLS) sécurise la connexion entre la passerelle et le backend.
Il y a différentes raisons de le faire. Pour exemple :
-
le backend est une API héritée qui ne peut pas être mise à jour pour prendre en charge la gestion des API OAuth
doit d’abord être configurée pour valider le jeton (en vérifiant au minimum les revendications de l’émetteur et de l’audience). Après la validation, utilisez l’une des options disponibles pour sécuriser les connexions ultérieures à partir de la gestion des API, telles que l’authentification TLS mutuelle (mTLS). Voir Options côté service, plus loin dans cet article.
-
Il n’est pas possible d’établir le contexte requis par le backend à partir de l’appelant
Une fois que la gestion des API a validé avec succès le jeton reçu de l’appelant, elle doit obtenir un jeton d’accès pour l’API backend à l’aide de son propre contexte ou d’un contexte dérivé de l’application appelante. Ce scénario peut être réalisé à l’aide de l’une des méthodes suivantes :
-
Une stratégie personnalisée telle que send-request pour obtenir un jeton d’accès ultérieur valide pour l’API principale auprès d’un fournisseur d’identité configuré.
-
Identité propre de l’instance Gestion des API : transmission du jeton de l’identité managée attribuée par le système ou par l’utilisateur de la ressource Gestion des API à l’API principale.
-
-
Quels
que soient les mécanismes d’authentification et d’autorisation sur leurs backends API, les organisations peuvent choisir de converger vers OAuth 2.0 pour une approche d’autorisation standardisée sur le front-end. La passerelle de Gestion des API peut permettre une configuration d’autorisation cohérente et une expérience commune pour les consommateurs d’API à mesure que les backends de l’organisation évoluent.
Scénario 3 : Gestion des API autorise le backend Avec
des connexions gérées (anciennement appelées autorisations ), vous utilisez le gestionnaire d’informations d’identification dans Gestion des API pour autoriser l’accès à un ou plusieurs services backend ou SaaS, tels que LinkedIn, GitHub ou d’autres backends compatibles OAuth 2.0. Dans ce scénario, une application utilisateur ou cliente envoie une demande à la passerelle Gestion des API, l’accès à la passerelle étant contrôlé à l’aide d’un fournisseur d’identité ou d’autres options côté client. Ensuite, via la configuration de la stratégie, l’utilisateur ou l’application cliente délègue l’authentification et l’autorisation du backend à Gestion des API.
Dans l’exemple suivant, une clé d’abonnement est utilisée entre le client et la passerelle, et GitHub est le fournisseur d’informations d’identification pour l’API principale.
Avec une connexion à un fournisseur d’informations d’identification, Gestion des API acquiert et actualise les jetons pour l’accès à l’API dans le flux OAuth 2.0. Les connexions simplifient la gestion des jetons dans plusieurs scénarios, tels que :
Une- application cliente peut avoir besoin de pour autoriser plusieurs backends SaaS à résoudre plusieurs champs à l’aide de résolveurs GraphQL.
- Les utilisateurs s’authentifient auprès de la gestion des API par authentification unique à partir de leur fournisseur d’identité, mais autorisent auprès d’un fournisseur SaaS backend (tel que LinkedIn) à l’aide d’un compte d’organisation commun.
- Une application cliente (ou un bot) doit accéder aux ressources en ligne sécurisées du backend pour le compte d’un utilisateur authentifié (par exemple, pour consulter des e-mails ou passer une commande).
Exemples :
Autres options pour sécuriser les API
Bien que l’autorisation soit préférée et qu’OAuth 2.0 soit devenu la méthode dominante pour activer une autorisation forte pour les API, la gestion des API fournit plusieurs autres mécanismes pour sécuriser ou restreindre l’accès entre le client et la passerelle (côté client) ou entre la passerelle et le backend (côté service). En fonction des besoins de l’organisation, ceux-ci peuvent être utilisés en complément d’OAuth 2.0. Alternativement configurez-les indépendamment si les applications appelantes ou les API backend sont héritées ou ne prennent pas encore en charge OAuth 2.0.
Mécanisme | Description | Considérations |
---|---|---|
mTLS | Validez le certificat présenté par le client de connexion et vérifiez les propriétés du certificat par rapport à un certificat géré dans Gestion des API | Le certificat peut être stocké dans un coffre de clés. |
Filtrer | (autoriser/refuser) les appels provenant d’adresses IP ou de plages d’adresses spécifiques | Permet de restreindre l’accès à certains utilisateurs ou organisations, ou au trafic provenant de services en amont. |
Clé d’abonnement | Limitez l’accès à une ou plusieurs API basées sur un abonnement Gestion des API | Nous vous recommandons d’utiliser un d’abonnement (API) en plus d’une autre méthode d’authentification ou d’autorisation. En soi, une clé d’abonnement n’est pas une forme d’authentification forte, mais son utilisation peut être utile dans certains scénarios, par exemple, le suivi de l’utilisation de l’API par des clients individuels ou l’octroi de l’accès à des produits API spécifiques. |
Mécanisme | Description | Considérations |
---|---|---|
Authentification d’identité managée | Authentifiez-vous auprès de l’API backend à l’aide d’une identité managée affectée par le système ou par l’utilisateur. | Recommandé pour l’accès limité à une ressource backend protégée en obtenant un jeton à partir de Microsoft Entra ID. |
Authentification par certificat | : authentifiez-vous auprès de l’API backend à l’aide d’un certificat client. | Le certificat peut être stocké dans le coffre de clés. |
Authentifiez-vous auprès de l’API backend à l’aide d’un nom d’utilisateur et d’un mot de passe transmis via un en-tête d’autorisation. | Découragé si de meilleures options sont disponibles. |