Skip to content

Instantly share code, notes, and snippets.

@jackphilippi
Forked from corbanb/pre-request-jwt.js
Last active January 7, 2019 02:35
Show Gist options
  • Save jackphilippi/c685f059d9b15045ee18bd7d47c5453e to your computer and use it in GitHub Desktop.
Save jackphilippi/c685f059d9b15045ee18bd7d47c5453e to your computer and use it in GitHub Desktop.
JWT tokenize - Postman Pre-Request Script
var header = {
alg: "HS256",
typ: "JWT"
};
var data = injectIAT({
userId: "<userID>",
username: "<user>",
email: "<email>",
displayName: "<displayName>",
profileName: "<profileName>",
exp: Math.round(Date.now() / 1000) + 300
});
var secret = '<jwtSecret>';
var encodedHeader = base64url(CryptoJS.enc.Utf8.parse(JSON.stringify(header)));
var encodedData = base64url(CryptoJS.enc.Utf8.parse(JSON.stringify(data)));
var token = `${encodedHeader}.${encodedData}`;
var signature = base64url(CryptoJS.HmacSHA256(token, secret));
var signedToken = `${token}.${signature}`;
postman.setEnvironmentVariable('jwtToken', signedToken);
function base64url(source) {
return CryptoJS.enc.Base64
.stringify(source)
.replace(/(\+|\/)/g, '-')
.replace(/=+$/, '');
}
function injectIAT(dataPayload) {
return Object.assign(
dataPayload,
{ iat: Math.floor(Date.now() / 1000) }
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment