Clément Schanen

Sécurité, identité et conformitéService régional

Cognito

Permet de gérer l’authentification, l’autorisation et la gestion des utilisateurs

Fonctionnalités

  • Gestion de l’inscription et la connexion des utilisateurs
  • Délégation de l’authentification à des providers tiers (Google, Amazon, Apple, etc)
  • Génération de tokens sécurisés (JWT)
  • Accès contrôlé à des ressources AWS

Cognito distingue l’identité de l’utilisateur et les permissions AWS associées

Cas d’utilisation

  • Authentification d’une application web ou mobile
  • API sécurisée avec API Gateway + Cognito

Concepts clés

User Pools

  • Constitue un annuaire d’utilisateurs
  • Permet de gérer :
    • L’enregistrement (signup)
    • La connexion (signin)
    • La récupération de mot de passe
    • Les attributs utilisateurs (email, téléphone, custom attributes)
  • Fonctionnalités principales :
    • Authentification username/password
    • MFA (SMS, TOTP)
    • Politiques de mot de passe
    • Tokens JWT (ID token, Access token, Refresh token)
    • Fédération d’identité (Google, Amazon, OIDC, SAML…)

Identity Pools

  • Liaison entre les utilisateurs et AWS
  • Permet de :
    • Échanger des tokens Cognito contre des identifiants AWS temporaires
    • Accéder à des ressources AWS via IAM Roles
  • Fonctionnalités clés :
    • Accès authentifié ou invité (guest)
    • Attribution de rôles IAM selon le type d’utilisateur
    • Permissions fines vers les autres services AWS

Flux d’authentification

  • L’utilisateur s’authentifie via le User Pool
  • Le User Pool retourne des tokens JWT
  • Les tokens sont échangés via l’Identity Pool
  • Cognito fournit des identifiants AWS temporaires
  • L’application accède aux ressources AWS autorisées

Intégrations courantes

  • Cognito s’intègre nativement avec :
    • API Gateway (authorizer Cognito)
    • AppSync (GraphQL avec auth intégrée)
    • IAM (rôles par type d’utilisateur)
    • Lambda (post-confirmation, triggers personnalisés)
    • CloudFront / ALB (auth côté edge ou backend)