Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function generateJWT(){
- //set credentials
- var BASE_URL = document.getElementById("baseUrl").value;
- var ACCESS_KEY = document.getElementById("accessKey").value;
- var SECRET_KEY = document.getElementById("secretKey").value
- var ACCOUNT_ID = document.getElementById("accountId").value;
- //Get List of Cycles
- var METHOD = document.getElementById("method").value;
- var API_URI = document.getElementById("apiURI").value;
- var JWT_EXPIRE = document.getElementById("jwtExpire").value | 3600;
- if(API_URI) {
- var RELATIVE_PATH = API_URI.split(BASE_URL)[1].split("?")[0];
- var QUERY_STRING = API_URI.split(BASE_URL)[1].split("?")[1];
- var CANONICAL_PATH;
- if (QUERY_STRING) {
- CANONICAL_PATH = METHOD + '&' + RELATIVE_PATH + '&' + QUERY_STRING;
- } else {
- CANONICAL_PATH = METHOD + '&' + RELATIVE_PATH + '&';
- }
- }else{
- return;
- }
- var header = {
- "alg": "HS256",
- "typ": "JWT"
- };
- var jwt_payload = {
- 'sub': ACCOUNT_ID,
- 'qsh': CryptoJS.SHA256(CANONICAL_PATH).toString(),
- 'iss': ACCESS_KEY,
- 'exp': new Date().getTime()+JWT_EXPIRE,
- 'iat': new Date().getTime()
- }
- var stringifiedHeader = CryptoJS.enc.Utf8.parse(JSON.stringify(header));
- var encodedHeader = base64url(stringifiedHeader);
- var stringifiedData = CryptoJS.enc.Utf8.parse(JSON.stringify(jwt_payload));
- var encodedData = base64url(stringifiedData);
- var token = encodedHeader + "." + encodedData;
- var signature = CryptoJS.HmacSHA256(token, SECRET_KEY);
- signature = base64url(signature);
- var signedToken = token + "." + signature;
- document.getElementById("token").innerHTML=signedToken;
- }
- 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;
- }
Add Comment
Please, Sign In to add comment