Je suis plutôt novice en matière de AWS Cognito et AWS Lambda. Jusqu'à présent, j'ai joué avec Serverless et déployé mon API REST via AWS Lambda. Cependant, j'aimerais mettre mon API à la disposition de plusieurs parties externes. Comme il s'agit d'un service à service, il n'y a pas d'utilisateur final qui appelle directement mon API. Je mets l'API à la disposition d'autres entreprises qui l'utilisent dans leurs applications. Toutes les fonctionnalités exposées via l'API sont plutôt simples, ce qui signifie qu'elles n'invoquent pas d'autres services AWS comme une base de données Dynamo, etc.
J'ai plusieurs questions, certaines sont plutôt de haut niveau, d'autres sont assez spécifiques à la configuration d'AWS Cognito. J'ai décidé de tout regrouper dans un seul post, car cela rend le tout beaucoup plus autonome et plus facile à comprendre.
1. Question, Cognito vs clé API : Quel est l'avantage d'utiliser AWS Cognito par rapport à AWS Lambda en combinaison avec la restriction de l'accès via une clé API et une liste blanche d'adresses IP ? L'un est-il beaucoup plus sûr que l'autre ?
Supposons que je veuille utiliser AWS Cognito. Comme il s'agit d'un cas de service à service, j'ai lu que la norme est d'utiliser des points de terminaison à jeton où l'adresse de l'utilisateur est la suivante grant_type
est client_credential
. J'ai trouvé ce qui suit sur moyen . Les premières étapes consistent à
- Créez un pool d'utilisateurs dans AWS Cognito.
- Créer un client App
- Ajouter des serveurs de ressources
- Activez le
client credentials
la case à cocher pourAllower OAuth flows
2. Question, App client : Dans le client d'application ajouté, je trouve l'adresse correspondante App client id
y App client secret
. Si j'expose mon API à plusieurs parties différentes, dois-je ajouter pour chaque partie un autre client d'application ? Sinon, ils utilisent tous les mêmes informations d'identification. Est-ce la bonne façon de procéder ?
3. Question, serveur de ressources : Ici, je suis complètement coincé. Quelle est la signification exacte de ceci ? En fin de compte, tout ce que je veux, c'est que mes clients puissent faire une requête post contre mon API et que l'accès soit accordé par Cognito. Une clarification de la signification et de la manière dont cela s'applique à mon cas serait appréciée. Je serais ravi de vous faire part d'autres informations si nécessaire.
La partie suivante consiste à configurer Cognito Authorizer pour la passerelle API. Cela devrait être parfait.
4. Question, flux de travail du client En ce qui concerne le flux de travail de mes clients. Ai-je raison de dire que cela consiste en les étapes suivantes :
- D'abord, je fournis au client son
client_id
yclient_secret
.
alors le client met en œuvre de son côté le flux de travail suivant :
- Chaque fois qu'il veut utiliser mon API exposée via API Gateway, il utilise d'abord l'API qu'il a fournie.
client_id
yclient_secret
pour récupérer son jeton de porteur. - Il utilise ce jeton de porteur pour faire une demande à API Gateway avec le jeton de porteur dans l'adresse IP.
Authorization
en-tête. - Si l'accès est accordé, le client récupère le résultat de mon API.
Est-ce correct ou est-ce que je manque quelque chose ?