Skip to content

Instantly share code, notes, and snippets.

@dmorosinotto
Forked from joshtwist/zumojwt.js
Created October 10, 2013 20:37
Show Gist options
  • Save dmorosinotto/6925272 to your computer and use it in GitHub Desktop.
Save dmorosinotto/6925272 to your computer and use it in GitHub Desktop.
function zumoJwt(expiryDate, aud, userId, masterKey) {
var crypto = require('crypto');
function base64(input) {
return new Buffer(input, 'utf8').toString('base64');
}
function urlFriendly(b64)
{
return b64.replace(/\+/g, '-').replace(/\//g, '_').replace(/\=/g, '');
}
function signature(input) {
var key = crypto.createHash('sha256').update(masterKey + "JWTSig").digest('binary');
var str = crypto.createHmac('sha256', key).update(input).digest('base64');
return urlFriendly(str);
}
var s1 = '{"alg":"HS256","typ":"JWT","kid":0}';
var j2 = {
"exp":expiryDate.valueOf() / 1000,
"iss":"urn:microsoft:windows-azure:zumo",
"ver":1,
"aud":aud,
"uid":userId
};
var s2 = JSON.stringify(j2);
var b1 = urlFriendly(base64(s1));
var b2 = urlFriendly(base64(s2));
var b3 = signature(b1 + "." + b2);
return [b1,b2,b3].join(".");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment