如何在 NodeJS 上验证 AWS Cognito 访问令牌
Posted
技术标签:
【中文标题】如何在 NodeJS 上验证 AWS Cognito 访问令牌【英文标题】:How to verify AWS Cognito Access Token on NodeJS 【发布时间】:2018-01-28 10:15:39 【问题描述】:我找到了一个关于如何verify Cognito access tokens with Python 的示例。我如何对 NodeJS 做同样的事情?没有SDK功能可以做到这一点吗?
到现在为止
authorizeCognitoJwt(token)
const COGNITO_POOL_ID = 'ap-southeast-1_xxx'
const COGNITO_JWT_SET =
'keys': [
'alg': 'RS256',
'e': 'AQAB',
'kid': 'ChkV+...=',
'kty': 'RSA',
'n': 'tkjexS...johc5Q',
'use': 'sig'
,
'alg': 'RS256',
'e': 'AQAB',
'kid': 'Ve...Eb8dw6Y=',
'kty': 'RSA',
'n': 'hW19H...0c9Q',
'use': 'sig'
]
const decodedJwt = jwt.decode(token, complete: true)
console.log(decodedJwt)
if (decodedJwt.payload.iss !== `https://cognito-idp.us-east-1.amazonaws.com/$COGNITO_POOL_ID`)
return 'INVALID_ISSUER'
if (decodedJwt.payload.token_use !== 'access')
return 'INVALID_TOKEN_USE'
var jwtKey = COGNITO_JWT_SET.keys.find(k => k.kid === decodedJwt.header.kid)
if (!jwtKey)
return 'INVALID_TOKEN_KID'
var verifiedKey = jwt.verify(token, /* how do I get the key? */)
return 'VALID'
但我被困在如何从COGNITO_JWT_SET
获取密钥
【问题讨论】:
这能回答你的问题吗? How to verify JWT from AWS Cognito in the API backend? 【参考方案1】:您可以使用this URL 获取COGNITO_JWT_SET
。
请参阅 AWS 移动博客中的博文 Integrating Amazon Cognito User Pools with API Gateway 以获取完整的代码示例。
【讨论】:
哦,我有这些,但我不知道如何使用它们?看到jwt.verify
函数了吗?如何使用这些验证我的令牌?
您是否查看了我分享的示例链接以供参考?
如何将密钥转换为 PEM? “您可以手动下载一次,将密钥转换为 PEM 并使用您的 Lambda 函数上传”
谢谢你看到文章下方的代码谢谢以上是关于如何在 NodeJS 上验证 AWS Cognito 访问令牌的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 NodeJS 在 AWS Lambda 上运行 PhantomJS
如何在 AWS Elastic Beanstalk 上的 Nodejs 应用程序上启用大文件的上传?
如何使用 CloudFormation 允许使用用户名和电子邮件登录的 AWS Cognito 配置?