You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
767 B
30 lines
767 B
var jws = require('jws'); |
|
|
|
module.exports = function (jwt, options) { |
|
options = options || {}; |
|
var decoded = jws.decode(jwt, options); |
|
if (!decoded) { return null; } |
|
var payload = decoded.payload; |
|
|
|
//try parse the payload |
|
if(typeof payload === 'string') { |
|
try { |
|
var obj = JSON.parse(payload); |
|
if(obj !== null && typeof obj === 'object') { |
|
payload = obj; |
|
} |
|
} catch (e) { } |
|
} |
|
|
|
//return header if `complete` option is enabled. header includes claims |
|
//such as `kid` and `alg` used to select the key within a JWKS needed to |
|
//verify the signature |
|
if (options.complete === true) { |
|
return { |
|
header: decoded.header, |
|
payload: payload, |
|
signature: decoded.signature |
|
}; |
|
} |
|
return payload; |
|
};
|
|
|