仅阅读docs,它们看起来与我非常相似,因此我无法真正辨别为什么要在另一个上使用。尽管身份 token 看起来更好,因为它具有来自用户池的自定义属性(例如:custom:blah
和默认属性,例如name
和email
)。
现在,我正在使用一个将访问 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/