SHARE
TWEET

Untitled

a guest Feb 16th, 2019 99 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function generateJWT(){
  2.                 //set credentials
  3.                 var BASE_URL = document.getElementById("baseUrl").value;
  4.                 var ACCESS_KEY = document.getElementById("accessKey").value;
  5.                 var SECRET_KEY = document.getElementById("secretKey").value
  6.                 var ACCOUNT_ID = document.getElementById("accountId").value;
  7.                 //Get List of Cycles
  8.                 var METHOD = document.getElementById("method").value;
  9.                 var API_URI = document.getElementById("apiURI").value;
  10.                 var JWT_EXPIRE = document.getElementById("jwtExpire").value | 3600;
  11.                 if(API_URI) {
  12.                     var RELATIVE_PATH = API_URI.split(BASE_URL)[1].split("?")[0];
  13.                     var QUERY_STRING = API_URI.split(BASE_URL)[1].split("?")[1];
  14.                     var CANONICAL_PATH;
  15.                     if (QUERY_STRING) {
  16.                         CANONICAL_PATH = METHOD + '&' + RELATIVE_PATH + '&' + QUERY_STRING;
  17.                     } else {
  18.                         CANONICAL_PATH = METHOD + '&' + RELATIVE_PATH + '&';
  19.                     }
  20.                 }else{
  21.                     return;
  22.                 }
  23.                 var header = {
  24.                     "alg": "HS256",
  25.                     "typ": "JWT"
  26.                 };
  27.                 var jwt_payload = {
  28.                     'sub': ACCOUNT_ID,
  29.                     'qsh': CryptoJS.SHA256(CANONICAL_PATH).toString(),
  30.                     'iss': ACCESS_KEY,
  31.                     'exp': new Date().getTime()+JWT_EXPIRE,
  32.                     'iat': new Date().getTime()
  33.                 }
  34.                 var stringifiedHeader = CryptoJS.enc.Utf8.parse(JSON.stringify(header));
  35.                 var encodedHeader = base64url(stringifiedHeader);
  36.                 var stringifiedData = CryptoJS.enc.Utf8.parse(JSON.stringify(jwt_payload));
  37.                 var encodedData = base64url(stringifiedData);
  38.                 var token = encodedHeader + "." + encodedData;
  39.                 var signature = CryptoJS.HmacSHA256(token, SECRET_KEY);
  40.                 signature = base64url(signature);
  41.                 var signedToken = token + "." + signature;
  42.                 document.getElementById("token").innerHTML=signedToken;
  43.             }
  44.             function base64url(source) {
  45.                 // Encode in classical base64
  46.                 encodedSource = CryptoJS.enc.Base64.stringify(source);
  47.                 // Remove padding equal characters
  48.                 encodedSource = encodedSource.replace(/=+$/, '');
  49.                 // Replace characters according to base64url specifications
  50.                 encodedSource = encodedSource.replace(/\+/g, '-');
  51.                 encodedSource = encodedSource.replace(/\//g, '_');
  52.                 return encodedSource;
  53.             }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top