Skip to content

Instantly share code, notes, and snippets.

@prasadjay
Created June 5, 2018 16:59
Show Gist options
  • Save prasadjay/bf9193bf69a5e7244a1d3cd45a6c2b26 to your computer and use it in GitHub Desktop.
Save prasadjay/bf9193bf69a5e7244a1d3cd45a6c2b26 to your computer and use it in GitHub Desktop.
Valitdate-JWT-Cognito
function ValidateToken(token) {
request({
url: `https://cognito-idp.${pool_region}.amazonaws.com/${poolData.UserPoolId}/.well-known/jwks.json`,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
pems = {};
var keys = body['keys'];
for(var i = 0; i < keys.length; i++) {
//Convert each key to PEM
var key_id = keys[i].kid;
var modulus = keys[i].n;
var exponent = keys[i].e;
var key_type = keys[i].kty;
var jwk = { kty: key_type, n: modulus, e: exponent};
var pem = jwkToPem(jwk);
pems[key_id] = pem;
}
//validate the token
var decodedJwt = jwt.decode(token, {complete: true});
if (!decodedJwt) {
console.log("Not a valid JWT token");
return;
}
var kid = decodedJwt.header.kid;
var pem = pems[kid];
if (!pem) {
console.log('Invalid token');
return;
}
jwt.verify(token, pem, function(err, payload) {
if(err) {
console.log("Invalid Token.");
} else {
console.log("Valid Token.");
console.log(payload);
}
});
} else {
console.log("Error! Unable to download JWKs");
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment