2017-08-20 56 views
0

我找到了一个关于如何使用verify Cognito access tokens with Python的示例。我如何对NodeJS执行相同的操作?有没有SDK功能来做到这一点?如何验证NodeJS上的AWS Cognito访问令牌

到目前为止,我有

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

回答

1

拿到钥匙是卡可以使用this URL获得COGNITO_JWT_SET

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

+1

哦,我有这些,但我不知道如何使用它们?参见'jwt.verify'函数?如何使用这些验证我的令牌? –

+0

您是否检查了我共享的示例链接? – Ashan

+0

如何将密钥转换为PEM? “您可以手动下载一次,将密钥转换为PEM并使用您的Lambda函数上传它们” –