Amazon web services AWS cognito:What';访问令牌和身份令牌之间的区别是什么?

Amazon web services AWS cognito:What';访问令牌和身份令牌之间的区别是什么?,amazon-web-services,jwt,amazon-cognito,Amazon Web Services,Jwt,Amazon Cognito,仅仅是读一下,它们看起来和我很相似,所以我真的不明白为什么要用一个而不是另一个。虽然标识令牌看起来更好,因为它有来自用户池的自定义属性(例如:custom:blah和默认属性,如name和email) 现在,我正在使用一个将访问令牌传递回浏览器的应用程序,以便它可以使用它进行ajax REST调用(有一个auth过滤器,它需要这个访问令牌并对其进行验证)。我可以用id令牌切换出访问令牌吗?当前的验证逻辑只是从访问令牌中获取sub字段(uuid),但该sub字段也存在于标识令牌中(以及除了我不需要

仅仅是读一下,它们看起来和我很相似,所以我真的不明白为什么要用一个而不是另一个。虽然标识令牌看起来更好,因为它有来自用户池的自定义属性(例如:
custom:blah
和默认属性,如
name
email


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

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

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

从表面上看,这似乎有点令人困惑,因为您实际上可以使用id_令牌访问服务,方式与访问令牌相同。然而,好的做法是在这种情况下使用access_令牌,如果后端服务需要用户数据,他们应该自己在Cognito中查找


编辑:如果您需要根据标识令牌中的声明对api调用进行身份验证,则在某些情况下这是完全有效的。但是要知道标识令牌中有哪些细节,以及这些声明是否适合发送到特定的API。如果您不需要使用id_令牌的任何声明,请使用access_令牌,因为这样可以减少您发送的潜在敏感数据量。

谢谢,我理解其中的区别,问题已得到解答。但我现在确实想知道,我是否应该将access/id令牌发送回浏览器(以便它进行ajax rest调用)?这通常是一种不好的做法?奇怪的是,在Amazon的会议演示中,他们解释说他们使用Id_令牌从IAM检索凭据(尽管有所有3个)…在多个场合,所以我很确定这不是一个错误。这就是我来研究这个问题的原因。我也遇到了这个问题。AWS明确声明在与用户池集成时调用API端点时使用ID令牌。关于“应该在Cognito中自己查找”——实际上有可能查找您可以从和id令牌获得的所有信息吗?具体地说,我想查找可以从id令牌获取的联合身份的标识id,但不确定如何从访问令牌获取。我只是尝试通过aws UI测试我的ApiGateway用户池授权器。idToken.jwtToken有效。accessToken.jwtToken不工作