【发布时间】:2021-08-04 03:15:47
【问题描述】:
我正在构建一个在后端使用 API Gateway 和 Lambda 的 React 应用程序。我正在完成集成 Cognito 身份验证的过程。我已经完成了以下工作:
Generate user pool
Upon login redirect to my React application with Auth Code
Extract Auth Code and send it to Token Enpoint
Receive back the id, access and refresh JWT tokens
我在这里的帖子中详细介绍了所有这些:AWS Cognito Notes
我对验证 JWT 令牌签名的概念感到困惑。 AWS 文档在此处描述了如何执行此操作:https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html
简而言之,我必须下载 JSON Web 密钥,然后将其与令牌上的密钥匹配。我不清楚这如何使过程更安全。该密钥是公开的。如果我在中间进行攻击,我可以简单地获取该密钥,然后将其附加到我的虚假 JWT 令牌上。
这让我觉得我对这个过程有一个根本的误解。 Auth Code 和 JWT 令牌不应该首先发送到 React 应用吗?
我是否应该将用户池重定向 URL 设置为 API 网关,并让它触发 Lambda 函数(包含客户端密钥),以检索 JWT 令牌,然后将 JWT 令牌发送到 React 应用程序?但是我会遇到同样的问题,不知道我认为令牌是否合法?令牌需要在客户端进行验证,对吧?
如果有人对此有任何见解或可以指出一篇好文章,我将不胜感激。
【问题讨论】:
标签: security jwt amazon-cognito jwk