Amazon Cognito
Disponibilité des fonctionnalités
Section titled “Disponibilité des fonctionnalités”| Fonctionnalité | Support |
|---|---|
| Clients OAuth2/OIDC | ✅ Complet |
| Clients SAML | ❌ Non pris en charge |
| Resource servers | ✅ Natif |
| Clonage de client | ✅ Complet |
| Rotation du secret | ✅ Complet |
| Suspension de clients | ❌ Non pris en charge |
Configuration
Section titled “Configuration”-
Donner à Taco l’accès au user pool
Taco appelle l’API des user pools Cognito avec le SDK AWS, qui lit les identifiants depuis sa chaîne de fournisseurs par défaut :
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY,AWS_PROFILE, un service account EKS (IRSA), un rôle de tâche ECS ou un profil d’instance EC2. Préférez un rôle à des clés longue durée quand Taco tourne sur AWS.L’identité a besoin de ces actions sur le user pool :
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["cognito-idp:ListUserPoolClients","cognito-idp:DescribeUserPoolClient","cognito-idp:CreateUserPoolClient","cognito-idp:UpdateUserPoolClient","cognito-idp:DeleteUserPoolClient","cognito-idp:ListUserPoolClientSecrets","cognito-idp:AddUserPoolClientSecret","cognito-idp:DeleteUserPoolClientSecret","cognito-idp:ListResourceServers","cognito-idp:DescribeResourceServer","cognito-idp:CreateResourceServer","cognito-idp:UpdateResourceServer","cognito-idp:DeleteResourceServer"],"Resource": "arn:aws:cognito-idp:<region>:<account-id>:userpool/<user-pool-id>"}]} -
Définir les variables d’environnement
Terminal window PROVIDER=cognitoCOGNITO_USER_POOL_ID=eu-west-1_AbCdEfGhI# Optionnel : par défaut la région de l'ID du user pool, puis AWS_REGIONCOGNITO_REGION=eu-west-1
Notes sur la gestion des clients
Section titled “Notes sur la gestion des clients”- Les clients sont des app clients du user pool. Cognito prend en charge les grants
authorization_code,implicitetclient_credentials;refresh_tokencorrespond au flux d’authentificationALLOW_REFRESH_TOKEN_AUTH. Les autres grants sont ignorés. - Cognito fixe à la création si un client a un secret : un client créé avec la méthode d’authentification
nonereste public, et un client confidentiel le reste. Pour changer, créez un nouveau client. client_credentialsexige un secret, ne peut pas être combiné avecauthorization_codeouimplicitdans le même client et n’accepte que des scopes de resource servers.- Les scopes sont les scopes OAuth autorisés de l’app client. Quand un client utilise un flux utilisateur sans aucun scope, Taco lui accorde
openid. L’audience d’un client est déduite de ses scopes de resource servers et n’est pas stockée à part. - La mise à jour d’un client conserve tous les paramètres que Taco ne gère pas (durée de validité des jetons, permissions sur les attributs, fournisseurs d’identité, flux d’authentification SDK…).
- Cognito ne peut pas servir de fournisseur d’identité SAML : les clients SAML ne sont pas disponibles.
- Cognito ne permet pas de désactiver un app client : suspendre un client dans le workflow d’enregistrement n’est enregistré que dans Taco.
- La rotation du secret en ajoute un nouveau avec
AddUserPoolClientSecret, puis supprime les précédents pour ne garder que le nouveau.
Resource servers
Section titled “Resource servers”Les resource servers sont gérés nativement dans le user pool. Leur identifiant ne peut pas être modifié après la création. Cognito nomme les scopes <identifiant>/<scope> : c’est sous cette forme qu’ils apparaissent dans Taco et qu’il faut les demander. Pour ajouter un scope, vous pouvez donner le nom seul ou le nom complet.
Connexion OIDC (optionnel)
Section titled “Connexion OIDC (optionnel)”Pour protéger le tableau de bord Taco avec Cognito, créez un app client confidentiel séparé avec le grant authorization code et les scopes openid, email et profile :
AUTH_CLIENT_OPENID_CONFIGURATION_URL=https://cognito-idp.<region>.amazonaws.com/<user-pool-id>AUTH_CLIENT_ID=your-app-client-idAUTH_CLIENT_SECRET=your-app-client-secretAjoutez <BASE_URL>/api/auth/callback/oidc aux Allowed callback URLs de l’app client.