Faire des appels vers AWS API gateway endpoint avec la clé api en utilisant rest client POSTMAN

nous développons une application mobile / web pour laquelle nous utilisons AWS lambda et dynamo db comme support.Les fonctions lambda autonomes fonctionnent parfaitement. Les appels sont acheminés via api gateway. Nous utilisons les clés api pour tirer parti des fonctionnalités de sécurité qu'il fournit. Pour certains tests, nous essayons d'appeler le point final de l'api par L'intermédiaire D'un tiers rest client POSTMAN.

les requêtes sont de type POST mais peu importe ce que nous essayons, nous obtenez de l'

403 ("message": "Missing authentication token.")

Une capture d'écran est fixé par référence. ( quelques portions sont ombrées pour des raisons de sécurité )

enter image description here

  1. nous sommes incapables de comprendre la cause profonde de ce comportement.
  2. si la même chose peut être réalisée avec un autre outil alors s'il vous plaît suggérer.
30
demandé sur Cœur 2015-09-16 06:51:51

6 réponses

en travaillant avec AWS API Gateway, je suis tombé dans le même piège que vous. Il y a deux choses qui peuvent causer l'infâme 403 ("message": "Missing authentication token.") affiche ce message:

  1. CloudFront et agressif de la mise en cache

je remarque que vous utilisez CloudFront pour mettre en cache vos requêtes/réponses API. CloudFront est un outil génial - l'un des meilleurs mécanismes de mise en cache si vous me demandez - mais quand mettre en cache des choses pendant le développement, il est vraiment facile de se faire rattraper par les messages d'erreur mis en cache. C'est peut-être le cas ici, donc mon conseil est de supprimer L'API de CloudFront jusqu'à ce que vous l'ayez fait fonctionner complètement.

  1. oubliant de redéployer

L'une des principales caractéristiques de API Gateway est la façon dont AWS gère plusieurs versions D'API. Une fois déployé, vous pouvez être en sécurité en sachant que vos paramètres API pas de changement de l' - exactement ce que vous voulez à partir d'une API de point de terminaison.

C'est dû à la façon dont les paramètres sont déployés. Chaque modification est apportée dans la console AWS doit être déployé pour un déploiement spécifique afin d'être en interaction avec live.

par exemple, si je déploie mon API sur le déploiement "live" et que tout fonctionne bien, c'est génial. Je peux maintenant continuer à modifier les paramètres de la console AWS pour améliorer l'API au fil du temps, et quand je suis satisfait de ce que j'ai changé, je peux me déployer à nouveau vers un autre déploiement de L'API, ce qui signifie que les utilisateurs actuels de L'API n'auront pas à changer leurs méthodes d'interaction jusqu'à ce qu'un déploiement soit rétabli dans le déploiement sur lequel ils travaillent.

le problème que vous pourriez rencontrer est que même si vous avez fait beaucoup de changements dans la console AWS, vous n'avez peut-être pas re-déployé dans le déploiement que vous testez dans Postman.

Note:

dans le panneau de L'éditeur de ressources, vous pouvez fournir des informations sur les types de réponses de cette méthode, leurs en-têtes et les types de contenu. Ici, il est possible de fournir des messages d'erreur plus significatifs à vos paramètres.

25
répondu Greg 2015-09-16 13:38:57

on dirait que vous n'avez pas ajouté la ressource dans votre URL. L'URL doit être quelque chose comme:

https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresource

mais le vôtre est plus comme

https://my-api-id.execute-api.region-id.amazonaws.com/test
22
répondu noo 2016-02-17 11:38:01

Demander Passerelle API chemins qui ne sont pas là renvoie le message "pas de Jeton d'Authentification" de la charge utile.

Malheureusement, c'est assez déroutant.

9
répondu David Dehghan 2016-04-22 18:25:50

dans mon cas, c'est que la méthode que j'ai supportée est POST et j'ai essayé d' GET dans le navigateur. J'ai retenté en faisant un POST en Facteur et cela a fonctionné!

5
répondu f01 2016-01-30 06:58:03

j'ai dû ajouter un plan D'utilisation de L'API, puis lier le plan à L'étape de L'API.

on dirait que c'est la seule façon de lier la clé à L'API dans AWS..

3
répondu TimoSolo 2016-09-07 08:42:39

sur la page de L'éditeur de scènes, il y a un nav gauche avec le nom de la scène. Si vous développez ce que vous obtenez une barre oblique; si vous développez cela, vous obtenez de vos ressources. Si vous développez vos ressources, vous obtenez votre méthode, et si vous cliquez sur la méthode, vous obtenez un "Invoquer" URL de lien (qui est le même que ci-dessus mais avec la ressource en annexe). Ce lien invoke URL fonctionne, en invoquant la méthode GET et en retournant les résultats.

0
répondu Anubhav Gupta 2017-06-29 09:02:59