J'ai créé une API dans Amazon API Gateway et je veux implémenter l'authentification IAM pour accéder à l'API. Quelle est la marche à suivre ?

Avec Amazon API Gateway, vous pouvez créer une API à l'aide de la console API Gateway, de l'interface de ligne de commande AWS, de l'API REST du service de contrôle API Gateway et des kits SDK spécifiques à la plate-forme ou au langage. L'exemple donné dans cet article a été créé à l'aide de la console Amazon API Gateway, comme décrit dans Création et test d'une API API Gateway à partir d'un exemple. Cet article décrit comment implémenter l'authentification IAM pour les API Amazon API Gateway à l'aide de la console IAM.

  1. Si vous ne disposez pas encore d'un compte AWS, consultez Préparation à l'utilisation d'Amazon API Gateway et Inscription à AWS.
  2. Créez un utilisateur IAM comme décrit dans Création d'un utilisateur, d'un groupe ou d'un rôle IAM dans votre compte AWS. Cet utilisateur peut être utilisé à la place des informations d'identification racine pour désigner l'authentification IAM pour les autres utilisateurs IAM.
  3. Effectuez les étapes décrites dans la section Attribution aux utilisateurs IAM d'autorisations d'accès aux services de contrôle et d'exécution Access API Gateway pour accorder à l'utilisateur IAM les autorisations requises pour désigner l'authentification IAM pour les autres utilisateurs IAM.
  4. Après avoir accordé à un utilisateur IAM les autorisations requises pour API Gateway, connectez-vous à la console Amazon API Gateway avec l'identité de cet utilisateur IAM et suivez les étapes décrites dans Création et test d'une API API Gateway à partir d'un exemple si vous n'avez pas encore créé d'API API Gateway.
  1. Sélectionnez l'API dans la liste et choisissez Resources.
  2. Choisissez la méthode POST répertoriée au début de la liste des ressources d'API pour l'API.
  3. Sélectionnez Method Request dans le volet de droite. Si vous avez créé l'API en suivant les instructions de l'exemple d'API, le paramètre Auth de Method Request est défini sur NONE par défaut.
  4. Sélectionnez l'icône affichée à droite de l'autorisation NONE ; dans la liste déroulante qui s'affiche, vous pouvez modifier les paramètres d'autorisation de la demande de méthode API POST de NONE à AWS_IAM.
  5. Sélectionnez AWS_IAM, puis cochez la case de droite pour confirmer votre choix. Après avoir modifié les paramètres d'autorisation de la demande de méthode API POST de NONE à AWS_IAM, vous devez accorder de manière explicite à l'utilisateur l'accès à l'API à l'aide d'une stratégie IAM.
  6. Sélectionnez la méthode POST récemment modifiée affichée au centre du volet Resources de la console API, puis sélectionnez Actions en haut du volet central pour afficher une liste déroulante.
  7. Pour Actions, choisissez Deploy API. Ceci déploie les modifications apportées aux ressources et applique les paramètres d'autorisation que vous avez mis à jour.

S'il est possible d'accorder l'accès à l'API au niveau d'un utilisateur IAM individuel, il est recommandé d'accorder l'accès aux API Amazon API Gateway au niveau d'un groupe IAM.

  1. Ouvrez la console AWS IAM et sélectionnez Groups.
  2. Sélectionnez le nom d'un groupe existant ou créez un nouveau groupe et sélectionnez son nom afin d'afficher la page récapitulative du groupe. Assurez-vous d'avoir sélectionné l'onglet Users sur la page récapitulative du groupe, puis sélectionnez Add Users to Group pour répertorier vos utilisateurs IAM. L'accès à l'API sera accordé aux utilisateurs IAM ajoutés à ce groupe.
  3. Choisissez un ou plusieurs utilisateurs IAM afin de les ajouter au groupe, puis sélectionnez Add Users. La page récapitulative du groupe s'affiche de nouveau.
  4. Dans l'onglet Permissions, choisissez Attach Policy.
  5. Choisissez la stratégie AmazonAPIGatewayInvokeFullAccess , puis sélectionnez Attach Policy.

Chaque membre de ce groupe peut désormais accéder aux API Amazon API Gateway qui implémentent les paramètres d'autorisation AWS_IAM. Les utilisateurs IAM qui n'appartiennent pas au groupe peuvent continuer à accéder aux API lorsque le paramètre d'autorisation est défini sur NONE, mais ils reçoivent un message d'erreur {message : « Missing Authentication Token »} lorsqu'ils tentent d'effectuer une demande à une ressource d'API à l'aide d'une méthode qui requiert l'autorisation AWS_IAM.

  1. Dans la console Amazon API Gateway, sélectionnez l'API.
  2. Dans la liste de catégories affichée sous l'API dans le volet de droite, choisissez la catégorie Stages .
  3. Dans le volet central de la console API Gateway, sélectionnez le triangle en regard de la première étape de l'API afin de développer sa hiérarchie de méthodes et d'options. Si vous avez créé l'exemple d'API, sélectionnez la méthode GET répertoriée à l'étape /pets/{petId} au bas de la hiérarchie.

Notez l'URL répertoriée en haut de cette page en regard de Invoke URL:. Cette URL devrait être similaire à la suivante si vous avez créé l'exemple d'API Amazon API Gateway :

https://uid.execute-api.regionidentifier.amazonaws.com/test/pets/{petId}

Vous pouvez utiliser cette URL pour appeler la ressource /pets/{petId} dans l'exemple d'API en ouvrant un navigateur et en remplaçant {petId} par une valeur entière, par exemple /pets/555.

Vérifiez que les paramètres d'autorisation AWS_IAM sont en vigueur en envoyant une demande signée SigV4 (par exemple, par le biais de l'application Postman à l'aide du type d'autorisation AWS Signature) à l'URL à l'aide des informations d'identification IAM d'un utilisateur IAM qui est membre du groupe avec la stratégie associée AmazonAPIGatewayInvokeFullAccess . Après avoir vérifié que vous pouvez vous connecter à l'URL sans erreur, envoyez une autre demande non signée (aucune information d'identification IAM fournie) à l'URL désignée sous Invoke URL.

Amazon API Gateway, AWS_IAM, paramètres d'autorisation, jeton d'authentification manquant, déploiement d'API, URL d'appel


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 31/08/2016