AWS cognito:Access和Identity令牌之间的区别是什么?

Zom*_*ies 13 amazon-web-services jwt amazon-cognito

只是阅读文档,它们看起来与我非常相似,所以我无法真正辨别为什么使用一个而不是另一个.虽然身份令牌看起来更好,因为它在用户池中具有自定义属性(例如:custom:blah和默认值,如nameemail).

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

F_S*_*O_K 18

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

access_token用于调用其他"外部"服务(并且通过外部我包括其他AWS服务 - 这些服务通常通过http调用).它为您的用户提供服务访问授权,而无需包含他们的个人详细信息.

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

  • 我刚刚尝试通过 aws UI 测试我的 ApiGateway 用户池授权者。idToken.jwtToken 有效。accessToken.jwtToken 不起作用 (3认同)
  • 奇怪的是,在 Amazon 的会议演示中,他们多次解释说,他们使用 Id_token 从 IAM 检索凭证(尽管拥有全部 3 个凭证),所以我很确定这不是一个错误。https://youtu.be/VZqG7HjT2AQ?t=9m50s 这就是我来看这个问题的原因。 (2认同)
  • 我也遇到了这个问题。当与用户池集成时,AWS明确声明在调用API终端节点时使用ID令牌。https://docs.aws.amazon.com/en_pv/apigateway/latest/developerguide/apigateway-invoke-api-integrated-with-cognito-user-pool.html (2认同)