Cognito avec le CLI
Cet article montre un résumé des commandes pour tester un Cognito User Pool avec le CLI.
L’objectif est de vérifier que la lambda est lancée correctement lors de la confirmation du sign up
Commandes
Cette approche pour une raison que j’ignore pour le moment ne fonctionne pas tout le temps.
CLIENT_ID="" # -> Cet id ce trouve > App Integration -> App client settings
CLIENT_POOL_ID=""
EMAIL=""
PASSWORD=""
aws cognito-idp sign-up --client-id "${CLIENT_ID}" --username "${EMAIL}" --password "${PASSWORD}"
{
"UserConfirmed": false,
"CodeDeliveryDetails": {
"Destination": "t***@s***",
"DeliveryMedium": "EMAIL",
"AttributeName": "email"
},
"UserSub": "f*bb*21f-6*9*-4*1d-bf20-*b9d*ed*ce*3"
}
aws cognito-idp confirm-sign-up --client-id "${CLIENT_ID}" --username "${EMAIL}" --confirmation-code "123456"
Puis vous pouvez générer un token rapidement avec cette commande:
aws cognito-idp \
admin-initiate-auth \
--user-pool-id "${CLIENT_POOL_ID}" \
--client-id "${CLIENT_ID}" \
--auth-flow ADMIN_NO_SRP_AUTH \
--auth-parameters "USERNAME=${EMAIL},PASSWORD=${PASSWORD}"
Vous devez temporairement activer l’option:
ALLOW_ADMIN_USER_PASSWORD_AUTH
Solution avec postman
User Pool Client
Voici la configuration du Client Cognito (User Pool Client):
Comme recommandé dans la documentation, seulement le Authorization Code Grant est activé.
Obtenir un id token valide
Première étape - Cognito User Pool Client Domain Name
Récupérer votre URL, naviguer simplement à la page Domain Name
Deuxième étape - récupérer un code
À noter que le redirect_uri
n’a pas besoin d’exister.
Vous devez construire une URL comme suit:
https://<VOTRE_DOMAINE>.auth.ca-central-1.amazoncognito.com/oauth2/authorize?client_id=<VOTRE_CLIENT_ID>&redirect_uri=http://localhost:8080/login&response_type=code
Il est obligatoire de lancer la commande dans un navigateur, vous devez vous connecter normalement.
N’oubliez pas de changer votre région. Assurez-vous que le
redirect-uri
corresponds exactement à ce que vous avez configuré dans Cognito.
Ensuite, récupérer le code qui est renvoyé dans l’URL.
http://localhost:8080/login?code=6ab2e883-7ff8-4225-aacc-b2a092190edf
Ce code est valide 5 minutes et peut être utilisé une seule fois.
Troisième étape - récupérer les informations
Pour cette étape j’utilise Postman, car il faut envoyer la requête avec la méthode POST
Vous devez construire l’URL comme suit:
https://<VOTRE_DOMAINE>.auth.ca-central-1.amazoncognito.com/oauth2/token?client_id=<VOTRE_CLIENT_ID>&redirect_uri=http://localhost:8080/login&code=6ab2e883-7ff8-4225-aacc-b2a092190edf&grant_type=authorization_code
Comme à la deuxième étape, n’oubliez pas de changer les valeurs.
Cette requête va pouvoir retourner le id_token
, access_token
& refresh_token
.
Puis vous pouvez utiliser votre id_token
avec l’authorizer dans l’API Gateway pour valider que tout est bien configuré.
Pour configurer postman et configuré le Authorization automatiquement: