我已成功将 AWS Cognito 集成到我的 Web 应用程序中进行用户身份验证,并将其链接到前端 (Angular),一切都运行良好。但是,我还想在后端(NodeJS)验证用户身份验证。我知道一种方法是在每个请求中发送身份验证令牌,但我不确定如何在后端检查和验证此令牌。
有什么想法吗?
JWT token 由 3 段 Base64 编码组成,前两段解码后为 JSON,易于读取和验证。这 3 个部分是:
最后一个是最关键的验证,以确保其他所有内容都没有被篡改。这应该通过检索 JSON Web 密钥 (JWK) 来完成,该密钥通常位于
(...)/.well-known/jwks.json
(对于 cognito,它是 https://cognito-idp.<Region>.amazonaws.com/<userPoolId>/.well-known/jwks.json
),选择正确的密钥 ID 并使用可用的 JWT 库之一进行验证(例如。AWS JWT 验证)。
确认完整性后,应验证一些声明,例如:
exp
过期时间,请确保尚未过期;iss
确保它来自 cognito 和正确的用户池;aud
(ID 令牌)和 client_id
(访问令牌)应与 Cognito 客户端 ID 匹配;token_use
应为 access
或 id
,具体取决于所需的令牌使用情况(确保 ID 令牌不用作访问权限,反之亦然)。诸如上面提到的图书馆,通常也会验证这些字段等等。
您可以在Cognito 开发人员指南 - 验证 JSON Web 令牌中找到更多详细信息。