Webux Lab

Par Studio Webux

Cognito avec le CLI de AWS

TG
Tommy Gingras Studio Webux S.E.N.C 2022-03-09

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:



Recherche