【问题标题】:How to verify AWS Cognito Access Token on NodeJS如何在 NodeJS 上验证 AWS Cognito 访问令牌
【发布时间】: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获取密钥

【问题讨论】:

标签: node.js amazon-web-services amazon-cognito


【解决方案1】:

您可以使用this URL 获取COGNITO_JWT_SET

请参阅 AWS 移动博客中的博文 Integrating Amazon Cognito User Pools with API Gateway 以获取完整的代码示例。

【讨论】:

  • 哦,我有这些,但我不知道如何使用它们?看到jwt.verify 函数了吗?如何使用这些验证我的令牌?
  • 您是否查看了我分享的示例链接以供参考?
  • 如何将密钥转换为 PEM? “您可以手动下载一次,将密钥转换为 PEM 并使用您的 Lambda 函数上传”
  • 谢谢你看到文章下方的代码谢谢
猜你喜欢
  • 2020-10-27
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-20
  • 1970-01-01
  • 2017-12-28
相关资源
最近更新 更多