2017-08-20 5 views
0

Ich habe ein Beispiel dafür gefunden, wie zu verify Cognito access tokens with Python. Wie mache ich das gleiche mit NodeJS? Gibt es dafür keine SDK-Funktion?So überprüfen Sie AWS Cognito Access Token auf NodeJS

weit So habe ich

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' 
} 

Aber steckte, wie bekomme ich Schlüssel von COGNITO_JWT_SET

Antwort

1

Sie die COGNITO_JWT_SET unter Verwendung this URL erhalten.

Verweisen Sie den Blogeintrag Integrating Amazon Cognito User Pools with API Gateway in AWS Mobile Blog für ein vollständiges Beispiel mit Code.

+1

Oh, ich habe diese, aber ich weiß nicht, wie man sie benutzt? Siehe die Funktion "jwt.verify"? Wie verifiziere ich mein Token mit diesen? –

+0

Haben Sie den Beispiellink überprüft, auf den ich mich bezog? – Ashan

+0

Wie konvertiere ich die Schlüssel in PEMs? "Sie können es einmal manuell herunterladen, indem Sie die Schlüssel in PEMs umwandeln und mit Ihrer Lambda-Funktion hochladen" –

Verwandte Themen