var app_id = pm.globals.get("app-id");
var jwtSecret = pm.globals.get("secret");
// Set headers for JWT
var header = {
'typ': 'JWT',
'alg': 'HS256'
};
// Prepare timestamp in seconds
var currentTimestamp = Math.floor(Date.now() / 1000)
var data = {
'iss': app_id,
'exp': currentTimestamp,
}
function base64url(source) {
// Encode in classical base64
encodedSource = CryptoJS.enc.Base64.stringify(source)
// Remove padding equal characters
encodedSource = encodedSource.replace(/=+$/, '')
// Replace characters according to base64url specifications
encodedSource = encodedSource.replace(/\+/g, '-')
encodedSource = encodedSource.replace(/\//g, '_')
return encodedSource
}
// encode header
var stringifiedHeader = CryptoJS.enc.Utf8.parse(JSON.stringify(header))
var encodedHeader = base64url(stringifiedHeader)
// encode data
var stringifiedData = CryptoJS.enc.Utf8.parse(JSON.stringify(data))
var encodedData = base64url(stringifiedData)
// build token
var token = `${encodedHeader}.${encodedData}`
// sign token
var signature = CryptoJS.HmacSHA256(token, jwtSecret)
signature = base64url(signature);
var signedToken = `${token}.${signature}`
console.log('Signed and encoded JWT', signedToken)
pm.environment.set('token', signedToken)