amazon-web-services - AWS Cognito:访问 token 和身份 token 之间有什么区别?

标签 amazon-web-services jwt amazon-cognito

仅阅读docs,它们看起来与我非常相似,因此我无法真正辨别为什么要在另一个上使用。尽管身份 token 看起来更好,因为它具有来自用户池的自定义属性(例如:custom:blah和默认属性,例如nameemail)。

现在,我正在使用一个将访问 token 传递回浏览器的应用程序,以便可以将其用于进行Ajax REST调用(有一个auth过滤器期望该访问 token 并对其进行验证)。我可以只使用id token 切换访问 token 吗?当前的验证逻辑是仅从访问 token 中获取sub字段(uuid),但是此sub字段也存在于身份 token 中(以及除我不需要的aud以外的几乎所有其他属性)。我只想确保我理解这项权利,因为这使我感到困惑,为什么两个 token 都存在并且看起来如此相似。

最佳答案

id_token供您的应用程序处理,因此您可以获取用户的所有个人详细信息,例如他们的姓名,年龄,电子邮件地址等。通常来说,您不应将此 token 发送到其他任何地方,因为它包含敏感的用户数据。

access_token用于调用其他“外部”服务(通过外部,我包括其他AWS服务-这些通常通过http调用)。它为您的用户提供服务访问授权,而不必包括他们的个人详细信息。

从表面上看,这似乎有点令人困惑,因为您实际上可以使用与access_token相同的方式使用id_token来访问服务。但是,良好的做法是在这种情况下使用access_token,如果后端服务需要用户数据,则应在Cognito中自行查找。

关于amazon-web-services - AWS Cognito:访问 token 和身份 token 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48543948/

相关文章:

django - 如何使用 Simple JWT (django rest) 将 JWT token 列入黑名单?

aws-api-gateway - 具有 API 网关的 Cognito 用户池

android - 在 Android 上使用 AWS Cognito 身份池进行 Google 身份验证失败

ruby-on-rails - 从 AWS Elastic Transcoder 作业中检索文件和缩略图 URL

amazon-web-services - 如果 StringSet 不存在,则附加到或创建它

amazon-web-services - S3静态网站存储桶不可用

javascript - 使用 aws-sdk 下载二进制文件时出现问题

c++ - "invalid_grant"- 通过 C++ 中的 Google 服务帐户与 googleapi 日历交互

http - 如何将自定义 HTTP 请求 header 添加到 Thymeleaf 生成的表单或链接?

amazon-web-services - 将用户从一个 AWS Cognito 池迁移到另一个保持 CognitoId/Sub 值