2017-08-20 36 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函數上傳它們」 –