如果已经调用了GetUser,那么还需要对访问令牌进行JWKS验证吗?

0

【以下的问题经过翻译处理】 如果有一个附加了JWT授权程序的API Gateway v2 -> Lambda,则该lambda将接收到一个形式为“Bearer ewyxa....................”的authorization header,其中“Bearer”之后的所有内容均为访问令牌。此时,如果您需要获取用户属性,则可以使用该令牌调用cognito GetUser。我已经做到了这一点,它运作良好,但这使我想到了一些问题:

如果我调用GetUser(),是否还需要对访问令牌进行JWKS验证?文档说明GetUser需要一个未过期的访问令牌。要知道它没有过期,必须检查签名。文档没有说明它是如何做到这一点的(JWKS,还是cognito的内部机制)。这使我想知道是否需要附加用户池授权程序。如果没有授权程序,我仍然可以从标头中获取访问令牌,然后调用GetUser(),这将完成两项任务:获取用户属性,并同时验证访问令牌未过期且其签名良好。它甚至可能会检查访问令牌是否已被废止。

在GetUser的文档中,https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html,并没有说明应该如何处理上述的问题。

所以,有人可以验证我的理解是否正确吗?

profile picture
专家
已提问 5 个月前24 查看次数
1 回答
0

【以下的回答经过翻译处理】 是的,你是正确的。当你调用GetUser() API时,Cognito会验证访问令牌以确保它没有过期并具有有效的签名。你不需要在访问令牌上先执行JWKS验证,因为Cognito会在内部处理验证。 通过调用GetUser() API,你可以检索用户属性,确保访问令牌未过期且具有有效签名,以及检查它是否被吊销。这使得使用用户池授权程序是可选的,因为你可以在没有它的情况下完成相同的任务。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则