Authentifier les utilisateurs finaux avec Amazon Cognito

Déployer des applications sur AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Construire votre propre connexion ?

  • Une nouvelle appli a besoin d'inscription et connexion complètes
  • L'équipe veut coder l'authentification à partir de zéro
  • Cognito le fait déjà de façon sécurisée

Choisir l'authentification gérée Amazon Cognito plutôt que bâtir une connexion maison

Déployer des applications sur AWS

User pools vs identity pools

User Pool Cognito servant d'annuaire et émettant des jetons à gauche, Identity Pool échangeant un jeton validé contre des justificatifs AWS temporaires au centre, services AWS à droite

  • User pool : annuaire géré des utilisateurs finaux
  • Gère l'inscription, la connexion et émet des tokens
  • Identity pool : échange une connexion contre des AWS credentials
  • À utiliser ensemble : authentifier, puis autoriser l'accès AWS
Déployer des applications sur AWS

Les trois jetons Cognito

  • ID token : qui est l'utilisateur (énoncés d'identité)
  • Access token : ce que l'utilisateur peut appeler
  • Refresh token : obtenir de nouveaux tokens sans se reconnecter
  • Les trois sont des JWT décodables et validables

Trois jetons JWT Cognito côte à côte : ID token avec énoncés d'identité, access token avec étendues d'API, refresh token marqué longue durée pour renouvellement silencieux

Déployer des applications sur AWS

Identité fédérée

  • Fédération : se connecter avec un fournisseur d'identité externe
  • Social : Google, Facebook, Apple
  • Entreprise : fournisseurs SAML et OIDC
  • Cognito sert d'intermédiaire de confiance et émet ses propres tokens

Fédération Cognito : l'utilisateur choisit un fournisseur social (Google, Facebook) ou d'entreprise SAML/OIDC ; Cognito valide la connexion externe et émet ses jetons normalisés

Déployer des applications sur AWS

Cognito comme autorisateur d'API Gateway

Autorisateur Cognito pour API Gateway : le client envoie l'en-tête Authorization avec l'access token, la passerelle valide auprès du user pool avant Lambda ; jetons invalides rejetés avec 401

  • API Gateway peut utiliser un Cognito authorizer
  • Le client envoie son jeton dans l'Authorization header
  • API Gateway valide le jeton avant l'exécution du backend
  • Jetons invalides ou expirés rejetés à la périphérie
Déployer des applications sur AWS

Flux type : connexion vers appel d'API

  • L'utilisateur se connecte au user pool
  • Reçoit les jetons ID, access et refresh
  • Le client appelle API Gateway avec l'access token
  • L'autorisateur Cognito valide, puis le backend s'exécute

Enchaînement connexion → appel d'API : connexion au user pool et réception des jetons, envoi de l'access token à API Gateway, validation par l'autorisateur Cognito, exécution de Lambda en backend

Déployer des applications sur AWS

Erreurs courantes avec Cognito

  • Envoyer l'ID token là où il faut un access token
  • Confondre user pools et identity pools
  • Tenter d'autoriser l'accès AWS avec un user pool seul
  • Stocker les jetons de façon non sécurisée côté client

Erreurs fréquentes avec Cognito : envoyer l'ID token à une API au lieu de l'access token, confondre user pool et identity pool, et stocker les jetons de façon non sécurisée côté client

Déployer des applications sur AWS

Passons à la pratique !

Déployer des applications sur AWS

Preparing Video For Download...