En lisant juste les docs , ils me semblent très similaires donc je ne peux pas vraiment discerner pourquoi utiliser l'un sur l'autre. Bien que le jeton d'identité semble meilleur car il possède des attributs personnalisés à partir du pool d'utilisateurs (par exemple: custom:blah
et ceux par défaut comme name
et email
).
En ce moment, je travaille avec une application qui transmet le jeton d'accès au navigateur afin qu'il puisse l'utiliser pour effectuer des appels ajax REST (il existe un filtre d'authentification qui attend ce jeton d'accès et Puis-je simplement changer le jeton d'accès avec le jeton id? La logique de validation actuelle consiste simplement à obtenir le champ sub
(l'uuid) du jeton d'accès, mais ce sub
Le champ est également présent dans le jeton d'identité (ainsi que dans pratiquement tous les autres attributs, à l'exception du aud
dont je n'ai pas besoin). Je veux simplement m'assurer de bien comprendre ce droit car il me dérange pourquoi les deux jetons existent et semblent si similaires.
L'id_token est destiné au traitement de votre application, vous pouvez donc obtenir toutes les informations personnelles de votre utilisateur, comme son nom, son âge, son adresse e-mail, etc. En règle générale, vous ne devriez pas envoyer ce jeton ailleurs car il contient des données utilisateur sensibles.
Le access_token est utilisé pour appeler d'autres services "externes" (et par externe j'inclus d'autres services AWS - ceux-ci sont souvent appelés via http). Il fournit une autorisation d'accès au service pour votre utilisateur sans avoir à inclure ses informations personnelles.
À première vue, cela semble légèrement déroutant, car vous pouvez réellement utiliser id_token pour accéder aux services de la même manière que access_token. Cependant, la bonne pratique consiste à utiliser access_token dans ce cas et si les services backend ont besoin de données utilisateur, ils doivent les rechercher eux-mêmes dans Cognito.