image
image
image
image
image
image

Aws api gateway verify jwt token

Sécurisez l’autorisation d’API dans Amazon API Gateway à l’aide de Microsoft Entra

ID Dans cet article de blog, nous vous guiderons tout au long du processus de configuration d’un mécanisme d’autorisation AWS Lambda avec Microsoft Entra ID (anciennement Azure Active Directory) à l’aide d’OpenID Connect (OIDC). Cela vous permettra d’utiliser l’authentification à partir d’Entra ID en tant que fournisseur d’identité pour votre Amazon API Gateway.

La sécurisation de vos API est cruciale pour protéger les données sensibles et garantir que seuls les utilisateurs autorisés peuvent accéder à vos ressources. Avec AWS Lambda Authorizer et Amazon API Gateway, vous avez accès à une solution puissante pour mettre en œuvre l’autorisation d’API et contrôler efficacement l’accès à vos API.

En combinant la puissance de calcul sans serveur d’AWS Lambda avec les fonctionnalités de gestion des identités et des accès d’Entra ID, vous pouvez établir un flux d’autorisation rationalisé et évolutif pour vos API. Avec ce , vous pouvez utiliser des comptes d’utilisateur nouveaux ou existants dans Entra ID pour prendre en charge l’authentification et l’autorisation de vos utilisateurs API.

Présentation

de la solution Nous vous guiderons tout au long du processus étape par étape des utilisateurs demandant une ressource qui est authentifiée et autorisée via un mécanisme d’autorisation AWS Lambda, en récupérant les informations d’identification de Microsoft Entra ID pour créer un flux d’autorisation sécurisé. Ce guide complet vous fournira les connaissances et les informations pratiques nécessaires à la mise en œuvre de cette solution d’authentification et d’autorisation. La figure 1 montre le diagramme d’architecture AWS de haut niveau et les services utilisés dans la solution :

1. Amazon API Gateway

2. AWS Lambda

3. AWS Identity and Access Management (IAM)

Figure 1 : Flux d’autorisation de l’API du mécanisme d’autorisation AWS Lambda

Il s’agit des étapes générales utilisées pour établir l’API autorisation avec un mécanisme d’autorisation AWS Lambda et l’intégration d’Entra ID :

  1. Configurer Entra ID : Configurez Entra ID en tant que fournisseur d’identité et établissez une relation de confiance entre Entra ID et les services AWS.
  2. Création d’un mécanisme d’autorisation AWS Lambda : créez une fonction d’autorisation AWS Lambda pour Amazon API Gateway afin de valider le jeton Web JSON (JWT) et de renvoyer la stratégie IAM en réponse avec des autorisations d’accès pour effectuer les actions requises.
  3. Créer une fonction de réponse AWS Lambda : créez une fonction AWS Lambda en tant que réponse API Gateway pour tester cette solution.
  4. Configurer Amazon API Gateway avec le mécanisme d’autorisation AWS Lambda : intégrez la fonction d’autorisation AWS Lambda à Amazon API Gateway pour prendre en charge le flux d’autorisation pour les points de terminaison d’API.
  5. Test et dépannage : testez et dépannez les problèmes courants en simulant des demandes d’API et vérifiez l’autorisation à l’aide de l’accès Entra ID en appelant l’API Amazon API Gateway via des plateformes d’API telles que Postman.

Pour

mettre en œuvre cette solution, vous devez disposer d’un accès administratif à l’ID Entra et d’un compte AWS. Si nécessaire, vous pouvez suivre ces instructions pour configurer l’accès à Entra ID.

Étape

1 : Configurer la configuration d’Entra ID

1.Accédez à la console Entra ID.

deux. Dans l’onglet Exposer une API, sélectionnez Ajouter une étendue , comme illustré à la figure 2.

Figure 2 : enregistrement de l’application Entra ID

3. Indiquez le nom de l’étendue et enregistrez, comme illustré à la figure 3. Une fois créée, copiez et notez cette valeur pour une utilisation ultérieure.

Figure 3 : Définition du champ d’application d’Entra ID

4. Le champ d’application, comme le montre la figure 4, permet d’appliquer le principe du moindre privilège, en veillant à ce que les applications n’aient accès qu’aux ressources et aux actions spécifiques dont elles ont besoin. Lorsqu’une application souhaite accéder à une ressource protégée, elle demande un jeton d’accès à Azure Active Directory (AD). Dans la demande de jeton, l’application spécifie les étendues dont elle a besoin pour effectuer les actions prévues. Dans ce cas, vous appellerez Amazon API Gateway, qui à son tour renverra une réponse Lambda.

Figure 4 : Portée personnalisée d’Entra ID

5. À partir de l’onglet  Certificats et secrets , créez des secrets client , comme illustré à la figure 5.

Figure 5 : Attribut d’application Entra ID – Clé secrète client

6. Une fois créé, copiez et notez la valeur et l’ID secret pour une utilisation future, comme illustré à la figure 6. Microsoft Azure Les clés secrètes client sont des informations d’identification confidentielles utilisées pour authentifier les applications et les services auprès d’Azure AD. Vous les utiliserez pour accorder l’accès aux ressources AWS pour le compte des services Entra ID.

Figure 6 : Application Entra ID – Paire clé-valeur de clé secrète client

Étape 2 : Création d’un mécanisme d’autorisation AWS Lambda

Un mécanisme d’autorisation AWS Lambda est une fonctionnalité fournie par AWS qui agit comme un gardien pour centraliser la logique d’autorisation, en veillant à ce que seuls les utilisateurs authentifiés et autorisés puissent accéder aux ressources de l’API. Le mécanisme d’autorisation AWS Lambda s’intègre aux services AWS tels qu’API Gateway et IAM, ce qui vous permet de contrôler l’accès à vos API en validant et en autorisant les demandes entrantes. Il renvoie également une politique IAM avec des autorisations d’accès autorisées pour effectuer les actions d’API requises.

AWS Lambda prend en charge deux types de mécanismes d’autorisation : les mécanismes d’autorisation basés sur des jetons et les mécanismes d’autorisation basés sur des demandes. Cette procédure pas à pas est à l’aide d’autorisateurs basés sur des jetons, qui s’appuient sur un jeton JWT pour valider la demande. Le jeton est généralement fourni dans l’en-tête « Authorization » en utilisant le schéma « Bearer ». Il authentifie les clients et détermine l’accès aux ressources en vérifiant les jetons d’autorisation, en élaborant une politique d’autorisation et en l’envoyant à Amazon API Gateway pour évaluation. Pour en savoir plus sur les autres mécanismes d’autorisation pris en charge, consultez le guide du développeur du mécanisme d’autorisation AWS Lambda.

Voici les étapes à suivre pour créer un mécanisme d’autorisation AWS Lambda :

  1. Vous utiliserez la bibliothèque aws-jwt-verify en tant que couche AWS Lambda
  2. Pour utiliser cette bibliothèque, vous devez la télécharger et l’installer localement. Exécutez la commande npm install aws-jwt-verify à partir du terminal de votre ordinateur local (macOS) ou de l’invite de commande/PowerShell (Windows). Cela générera un fichier de module de nœud. Compressez et compressez l’ensemble du module.
  3. Connectez-vous à AWS Management Console et accédez à AWS Lambda . Dans le panneau de menu de gauche, sélectionnez Calques , puis cliquez sur Créer un calque , comme illustré à la figure 7.

Figure 7 : Ajout de la couche AWS Lambda à partir d’AWS Management Console

4. Sur la page Créer une couche, comme illustré à la figure 8, spécifiez le nom (par exemple, aws-jwt-verify ) et la description de votre couche, puis chargez le fichier .zip que vous avez créé à l’étape 2 ci-dessus. Pour les environnements d’exécution compatibles , ajoutez Node.js environnements d’exécution 18.x et supérieurs.

Version 8 : module aws-jwt-verify en tant que couche 5 AWS Lambda

. Ensuite, créez une fonction avec le nom " lambda-authorizer-for-azure-ad " et choisissez le runtime comme Node.js 20.x , comme illustré à la figure 9.

Figure 9 : Création d’une fonction AWS Lambda

La fonction reçoit un jeton porteur en tant qu’événement, qui est ensuite transmis à la méthode aws-jwt-verify pour décoder et valider le jeton JWT. Une fois la vérification réussie, cette méthode extrait la revendication d’étendue de l’utilisateur pour déterminer les autorisations d’accès de l’utilisateur aux services AWS.

6. Planche à voile Ajoutez la couche « aws-jwt-verify », que nous avons créée à l’étape 4, comme illustré à la figure 10.

Figure 10 : Ajouter une couche à la fonction AWS Lambda

7. Dans Ajouter une couche, sélectionnez Couches personnalisées , comme illustré à la figure 11. Dans la liste des couches personnalisées, sélectionnez la couche que nous avons créée à l’étape 4 et sélectionnez la dernière version (version 1). Cliquez sur Ajouter pour ajouter la couche dans la fonction.

Figure 11 : Ajouter des couches personnalisées à la fonction AWS Lambda

8. Copiez et remplacez le code ci-dessous dans votre fichier source de code index.mjs :

Remarque : Mettez à jour l’espace réservé des paramètres du vérificateur IDP (<issuer_url_placeholder>, <audience_id_placeholder>) et la ressource de stratégie iamPolicytoInvokeAPI (<account-id> :<api-id>) avec les valeurs appropriées pour correspondre à votre environnement.

9. Planche à billets Dans l’onglet Source du code, sélectionnez Déployer pour déployer le code de la fonction Lambda, comme illustré à la figure 12.

Figure 12 : Déploiement du code de la fonction AWS Lambda

Étape 3 : Création d’une fonction de réponse AWS Lambda

Dans cette étape, vous allez créer une autre  fonction Lambda en tant que pour la réponse Amazon API Gateway. Cette fonction sera utilisée ultérieurement dans la configuration d’AWS API Gateway en tant qu’exemple de fonction de réponse pour les tests.

1. Aéroport Connectez-vous à AWS Management Console et accédez à AWS Lambda .

deux. Sélectionnez Créer une fonction et choisissez Auteur à partir de zéro .

3. Accès Entrez un nom de fonction. Dans cette procédure pas à pas, j’utilise sample-lambda-function. Choisissez le runtime comme Node.js 20.x . Laissez le code par défaut tel quel et passez à l’étape suivante.

Étape 4 : Configurer Amazon API Gateway avec le mécanisme d’autorisation AWS Lambda

1. Connectez-vous à la console Amazon API Gateway et sélectionnez API HTTP comme type d’API , comme illustré à la figure 13. Cliquez sur Générer .

Figure 13 : Console Amazon API Gateway

deux. Entrez le nom de l’API . Pour cette procédure pas à pas, je l’ai nommé http-api-for-auzuread-auth .  Sélectionnez Vérifier et créer , comme illustré à la figure 14.

Figure 14 : Création de l’API 3 d’Amazon API Gateway

. Pour ajouter un itinéraire, sélectionnez Itinéraires dans le volet de navigation de gauche et cliquez sur Créer , comme illustré à la figure 15.

Figure 15 : Route 4 de la passerelle API

. Dans la section Route et méthode, sélectionnez GET comme méthode et tapez /auth comme exemple de chemin d’accès. Cliquez sur Créer , comme illustré à la Figure 16.

Figure 16 : Création d’un itinéraire

5. Dans le menu de navigation de gauche, sélectionnez Autorisation . Sélectionnez Obtenir un itinéraire dans la liste, puis Créer et attacher un mécanisme d’autorisation , comme illustré à la figure 17.

Figure 17 : Autorisation de la passerelle API

6. Sur la page Créer un mécanisme d’autorisation, sélectionnez Lambda comme type d’autorisation, fournissez un nom , sélectionnez la fonction d’autorisation AWS Lambda créée à l’étape 3.a, puis sélectionnez Stratégie IAM comme mode de réponse. Dans Appeler l’autorisation , assurez-vous de sélectionner Accorder automatiquement l’autorisation API Gateway pour appeler votre fonction Lambda . Conservez les autres valeurs par défaut et passez à la commande Créer et attacher , comme illustré à la figure 18.

(Facultatif) : vous pouvez activer la mise en cache de l’API dans Amazon API Gateway pour mettre en cache les réponses de votre point de terminaison et améliorer la latence des demandes. Cache les réponses pour une période de durée de vie (TTL) spécifiée sont utilisées pour répondre aux demandes, ce qui réduit le nombre d’appels au point de terminaison.

Remarque : La gestion de l’invalidation du cache est essentielle, car si le code du mécanisme d’autorisation lambda ou les données utilisées pour l’autorisation changent, le cache doit être invalidé pour s’assurer que les demandes suivantes sont correctement autorisées.

Figure 18 : Ajout d’AWS Lambda en tant qu’autorisateur

7. Dans le menu de navigation de gauche, sélectionnez Intégrations . Sélectionnez Obtenir un itinéraire dans la liste, puis Créer et attacher une intégration , comme illustré à la figure 19.

Figure 19 : Intégration d’Amazon API Gateway

8. Sur la page Créer une intégration, sélectionnez Fonction Lambda comme type d’intégration, puis choisissez l’exemple Lambda fonction de réponse créée à l’étape 4. Dans Appeler l’autorisation , assurez-vous de sélectionner Accorder automatiquement l’autorisation API Gateway pour appeler votre fonction Lambda . Passez à la création , comme illustré à la figure 20.

Figure 20 : Création d’une intégration Amazon API Gateway

5. Test et dépannage

Vous pouvez tester cette API à l’aide d’un outil de développement d’API, tel que Postman :

1. À partir de la console Entra ID, accédez à l’application Entra ID créée à l’étape 1 pour cette procédure pas à pas et sélectionnez Points de terminaison .

Figure 21 : Vue d’ensemble de l’application Entra ID page

2. Copiez les valeurs du point de terminaison d’autorisation OAuth 2.0 (v2) et du point de terminaison de jeton OAuth 2.0 (v2) en tant qu’URL d’authentification et URL de jeton d’accès respectivement, comme illustré à la figure 22. Utilisez ces valeurs dans la requête Postman.

Figure 22 : Points de terminaison de l’application Entra ID

3. Dans l’onglet Autorisation de la demande Postman, entrez les valeurs URL d’authentification, URL du jeton d’accès, ID client, Secret client et Portée pour générer un nouveau jeton d’accès, comme illustré à la figure 23.

Figure 23 : Interface Postman pour générer un jeton

Une fois que vous êtes autorisé et que vous recevez un jeton, vous pouvez utiliser le jeton pour tester divers points de terminaison de l’API. Vous recevrez le statut « 200 » pour toutes les API autorisées.

Il est important de noter que si différentes étendues ou autorisations sont requises pour différentes parties de l’API, elles doivent être ajoutées aux étendues dans l’ID Entra (Entra ID), qui doit être délimité par des espaces. Lorsque le mécanisme d’autorisation AWS Lambda est configuré en tant que source d’autorisation, vous ne pouvez accéder à la ressource que si vous fournissez un jeton valide avec l’étendue valide.

nettoyage

  • Dans l’environnement Entra ID, supprimez la configuration Microsoft Entra ID que nous avons créée dans le cadre de cette solution.
  • Dans votre environnement AWS, connectez-vous à la console Amazon API Gateway et supprimez l’API HTTP et la fonction d’autorisation AWS Lambda.

Conclusion

Dans cet article de blog, nous vous avons expliqué le processus de configuration d’un mécanisme d’autorisation AWS Lambda pour l’autorisation d’API à l’aide d’Entra ID afin de créer une solution d’authentification robuste et évolutive pour le contrôle d’accès aux API. Ce guide étape par étape aborde la compréhension du mécanisme d’autorisation AWS Lambda, la configuration d’Entra ID pour l’autorisation d’API, la création de la fonction d’autorisation AWS Lambda, l’intégration d’AWS API Gateway et d’Entra ID, le test et le dépannage de la configuration, ainsi que la mise à l’échelle et la surveillance de la solution. De plus, à l’instar de l’intégration d’Amazon API Gateway, le mécanisme d’autorisation AWS Lambda peut être configuré avec d’autres services AWS tels qu’AWS AppSync pour s’intégrer aux utilisateurs Entra ID pour accéder aux services et aux points de terminaison AWS.

AWS dispose de beaucoup plus de services et de fonctionnalités que tout autre fournisseur de cloud, ce qui rend plus rapide, plus facile et plus rentable la migration de vos applications existantes vers le cloud et la création de presque tout ce que vous pouvez imaginer. Donnez à vos applications Microsoft l’infrastructure dont elles ont besoin pour générer les résultats commerciaux que vous souhaitez. Consultez nos blogs .NET sur AWS et AWS Database pour obtenir des conseils et des options supplémentaires pour vos charges de travail Microsoft. Contactez-nous pour commencer votre migration et votre modernisation dès aujourd’hui.