web-dev-qa-db-fra.com

Comment authentifier les utilisateurs pour AWS API Gateway?

Je crée un serveur moins REST utilisant AWS API Gateway et AWS Lambda. Bien que les points de terminaison aient été créés et liés avec les fonctions Lambda correspondantes, l'étape suivante consiste à ajouter une couche d'authentification pour authentifier les utilisateurs par e-mail et mot de passe. D'après ce que j'ai pu comprendre de la documentation, les méthodes API Gateway peuvent prendre en charge l'accès basé sur les clés API ou l'accès basé sur IAM. Mais je ne pouvais pas comprendre comment implémenter en toute sécurité l'authentification à l'aide des clés API.

Dois-je créer un serveur pour faire l'authentification et gérer les utilisateurs? Existe-t-il un moyen pour que ce soit une application de bout en bout sans serveur complet? Toute ressource permettant de pointer dans la bonne direction sera très appréciée. Je regarde ce document en ce moment

17
Mandeep Singh

Une annonce récente était API Gateway Custom Authorizers: http://docs.aws.Amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html

"vous pouvez contrôler l'accès à vos API à l'aide de stratégies d'authentification par jeton au porteur, telles que OAuth ou SAML. Pour ce faire, vous fournissez et configurez un autoriseur personnalisé, une fonction Lambda que vous possédez, pour API Gateway à utiliser pour autoriser les demandes des clients pour les API configurées "

Une autre bonne ressource qui, je pense, a été écrite avant la sortie de Custom Authorizer: https://auth0.com/docs/integrations/aws-api-gateway/part-2

13
Ryan

AWS API Gateway peut également être authentifié à l'aide de clés API. Suivez les étapes ci-dessous: -

  1. Définissez la clé API requise dans la méthode Resource dans API Gateway.
  2. Créer un plan d'utilisation et ajouter des étapes API associées
  3. Créez une clé API et associez-la au plan d'utilisation.

Ensuite, lorsque la passerelle API est appelée, la clé API doit être transmise en tant qu'en-tête.

HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(new MediaType[]{MediaType.APPLICATION_JSON}));
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("x-api-key", apiKey);
3
dassum