Guest User

Untitled

a guest
Feb 16th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  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. }
Add Comment
Please, Sign In to add comment