Groupes d'utilisateurs, bassins d'identités et JWT

Utiliser la sécurité AWS pour les développeurs

Rahul Singh

Technical Product Manager

Cognito : deux services sous un même nom

Amazon Cognito

  • Gestion des identités pour les utilisateurs de votre application
  • Un nom, deux services distincts

Deux questions au-dessus d'une limite en pointillés intitulée Amazon Cognito. À l'intérieur, deux panneaux bleus côte à côte : un groupe d'utilisateurs décrit comme votre annuaire d'utilisateurs et un bassin d'identités décrit comme un courtier d'identifiants. Des lignes des deux panneaux convergent vers une boîte orange en pointillés en bas, indiquant que plusieurs applications utilisent les deux.

Utiliser la sécurité AWS pour les développeurs

Cognito : deux services sous un même nom

Amazon Cognito

  • Gestion des identités pour les utilisateurs de votre application
  • Un nom, deux services distincts

Lequel vous faut-il ?

  • Connexion et profils : groupe d'utilisateurs
  • Navigateur ou mobile appelant AWS directement : bassin d'identités

Deux questions au-dessus d'une limite en pointillés intitulée Amazon Cognito. À l'intérieur, deux panneaux bleus côte à côte : un groupe d'utilisateurs décrit comme votre annuaire d'utilisateurs et un bassin d'identités décrit comme un courtier d'identifiants. Des lignes des deux panneaux convergent vers une boîte orange en pointillés en bas, indiquant que plusieurs applications utilisent les deux.

Utiliser la sécurité AWS pour les développeurs

Un groupe d'utilisateurs connecte vos usagers

Un annuaire d'utilisateurs géré

  • Inscription et connexion
  • Réinitialisation du mot de passe
  • Authentification multifacteur

Flux vertical : un utilisateur d'application se connecte à un groupe d'utilisateurs qui détient les mots de passe, et le groupe renvoie une boîte contenant un jeton d'ID, un jeton d'accès et un jeton d'actualisation

Utiliser la sécurité AWS pour les développeurs

Un groupe d'utilisateurs connecte vos usagers

Un annuaire d'utilisateurs géré

  • Inscription et connexion
  • Réinitialisation du mot de passe
  • Authentification multifacteur

 

En cas de succès : trois jetons

Flux vertical : un utilisateur d'application se connecte à un groupe d'utilisateurs qui détient les mots de passe, et le groupe renvoie une boîte contenant un jeton d'ID, un jeton d'accès et un jeton d'actualisation

Utiliser la sécurité AWS pour les développeurs

Un groupe d'utilisateurs connecte vos usagers

Un annuaire d'utilisateurs géré

  • Inscription et connexion
  • Réinitialisation du mot de passe
  • Authentification multifacteur

 

En cas de succès : trois jetons

  • Jeton d'ID : qui est l'usager
  • Jeton d'accès : ce qu'il peut appeler
  • Jeton d'actualisation : en obtenir de nouveaux plus tard

Flux vertical : un utilisateur d'application se connecte à un groupe d'utilisateurs qui détient les mots de passe, et le groupe renvoie une boîte contenant un jeton d'ID, un jeton d'accès et un jeton d'actualisation

Utiliser la sécurité AWS pour les développeurs

Un bassin d'identités émet des identifiants AWS

Les jetons ne sont pas des identifiants

  • Preuve d'identité pour votre application
  • Pas des identifiants pour accéder aux services AWS

 

Bassins d'identités : jeton fiable en entrée, identifiants en sortie

Flux vertical avec la même géométrie que le schéma du groupe d'utilisateurs : un jeton fiable est présenté à un bassin d'identités, qui vérifie son émetteur et renvoie des identifiants AWS limités à un rôle et temporaires

Utiliser la sécurité AWS pour les développeurs

Un bassin d'identités émet des identifiants AWS

Les jetons ne sont pas des identifiants

  • Preuve d'identité pour votre application
  • Pas des identifiants pour accéder aux services AWS

 

Bassins d'identités : jeton fiable en entrée, identifiants en sortie

  • Une tâche de build a échangé un jeton OIDC
  • Preuve que vous détenez, échangée contre une carte d'accès

Flux vertical avec la même géométrie que le schéma du groupe d'utilisateurs : un jeton fiable est présenté à un bassin d'identités, qui vérifie son émetteur et renvoie des identifiants AWS limités à un rôle et temporaires

Utiliser la sécurité AWS pour les développeurs

Une appli, les deux volets

Un navigateur utilisant les deux

  1. Se connecter, recevoir un jeton
  2. Envoyer ce jeton à votre API

Jeton porteur : qui le détient, l'utilise

Un flux vertical. Un navigateur se connecte à un groupe d'utilisateurs, qui renvoie un jeton. Ce même jeton se sépare en deux : à gauche vers votre API et à droite vers un bassin d'identités. Le bassin d'identités renvoie des identifiants, et ce sont eux qui atteignent S3.

Utiliser la sécurité AWS pour les développeurs

Une appli, les deux volets

Un navigateur utilisant les deux

  1. Se connecter, recevoir un jeton
  2. Envoyer ce jeton à votre API
  3. Échanger ce même jeton contre des identifiants

Un flux vertical. Un navigateur se connecte à un groupe d'utilisateurs, qui renvoie un jeton. Ce même jeton se sépare en deux : à gauche vers votre API et à droite vers un bassin d'identités. Le bassin d'identités renvoie des identifiants, et ce sont eux qui atteignent S3.

Utiliser la sécurité AWS pour les développeurs

Une appli, les deux volets

Un navigateur utilisant les deux

  1. Se connecter, recevoir un jeton
  2. Envoyer ce jeton à votre API
  3. Échanger ce même jeton contre des identifiants
  4. Atteindre S3 avec ces identifiants

Jetons pour votre code, identifiants pour AWS

Un flux vertical. Un navigateur se connecte à un groupe d'utilisateurs, qui renvoie un jeton. Ce même jeton se sépare en deux : à gauche vers votre API et à droite vers un bassin d'identités. Le bassin d'identités renvoie des identifiants, et ce sont eux qui atteignent S3.

Utiliser la sécurité AWS pour les développeurs

Un jeton est un texte signé

Trois segments reliés par des points et nommés En-tête, Charge utile et Signature. Un cadenas ouvert se trouve sur la charge utile, et un crochet sous les deux premiers segments montre la portée de la signature.

JWT : JSON Web Token

  • Claims : énoncés étiquetés sur l'usager
Utiliser la sécurité AWS pour les développeurs

Un jeton est un texte signé

Trois segments reliés par des points et nommés En-tête, Charge utile et Signature. Un cadenas ouvert se trouve sur la charge utile, et un crochet sous les deux premiers segments montre la portée de la signature.

JWT : JSON Web Token

  • Claims : énoncés étiquetés sur l'usager
  • Codé, non chiffré
  • Tout le monde peut le lire et le modifier
Utiliser la sécurité AWS pour les développeurs

Vérifier avant de lire

La vérification d'abord

  • JWKS : JSON Web Key Set, clés publiques de signature de l'émetteur
  • Signature vérifiée avec ces clés

Schéma de porte verticale. Un jeton arrive et passe quatre vérifications cochées dans l'ordre : signature, émetteur, audience et expiration. Les clés publiques de l'émetteur alimentent la vérification de signature, et ce n'est qu'après la quatrième vérification que le chemin rejoint une boîte verte pour lire les claims.

Utiliser la sécurité AWS pour les développeurs

Vérifier avant de lire

La vérification d'abord

  • JWKS : JSON Web Key Set, clés publiques de signature de l'émetteur
  • Signature vérifiée avec ces clés

 

Puis trois claims

  • iss : votre groupe d'utilisateurs
  • aud sur un jeton d'ID, client_id sur un jeton d'accès
  • exp : toujours valide

Schéma de porte verticale. Un jeton arrive et passe quatre vérifications cochées dans l'ordre : signature, émetteur, audience et expiration. Les clés publiques de l'émetteur alimentent la vérification de signature, et ce n'est qu'après la quatrième vérification que le chemin rejoint une boîte verte pour lire les claims.

Utiliser la sécurité AWS pour les développeurs

Un jeton vérifié peut être erroné

Deux cartes assorties côte à côte. La carte du jeton d'ID est marquée comme jeton d'identité, montre l'ID client dans le claim d'audience et indique qu'elle ne porte aucune étendue, au-dessus d'une boîte grise pour qui est l'usager. La carte du jeton d'accès est marquée comme jeton d'accès, montre l'ID client dans son propre claim d'identifiant client et indique qu'elle porte une étendue, au-dessus d'une boîte orange pour ce qu'il peut appeler. Une bande en pointillés en bas des deux cartes indique que le claim de groupes Cognito apparaît dans les deux jetons.

Vérifié, et pourtant le mauvais jeton

Utiliser la sécurité AWS pour les développeurs

Un jeton vérifié peut être erroné

Deux cartes assorties côte à côte. La carte du jeton d'ID est marquée comme jeton d'identité, montre l'ID client dans le claim d'audience et indique qu'elle ne porte aucune étendue, au-dessus d'une boîte grise pour qui est l'usager. La carte du jeton d'accès est marquée comme jeton d'accès, montre l'ID client dans son propre claim d'identifiant client et indique qu'elle porte une étendue, au-dessus d'une boîte orange pour ce qu'il peut appeler. Une bande en pointillés en bas des deux cartes indique que le claim de groupes Cognito apparaît dans les deux jetons.

Vérifié, et pourtant le mauvais jeton

token_use indique le type

  • cognito:groups figure dans les deux types, et n'est pas une portée

  • scope : ce que le jeton peut appeler

  • sub : quel usager, et cela ne change jamais
  • L'identité n'est pas une permission
Utiliser la sécurité AWS pour les développeurs

Passons à la pratique !

Utiliser la sécurité AWS pour les développeurs

Preparing Video For Download...