{"id":316,"date":"2017-03-09T16:20:22","date_gmt":"2017-03-09T15:20:22","guid":{"rendered":"https:\/\/kszyh.kisim.eu.org\/?p=316"},"modified":"2017-03-09T16:20:22","modified_gmt":"2017-03-09T15:20:22","slug":"wsse-postman-pre-request-script","status":"publish","type":"post","link":"https:\/\/kszyh.kisim.eu.org\/?p=316","title":{"rendered":"WSSE &#8211; Postman Pre-request Script"},"content":{"rendered":"<pre class=\"lang:js decode:true \">\/\/ Symfony SHA512 encryption provider\r\nvar cipher = function (secret, salt) {\r\n\tvar salted = secret + '{' + salt + '}';\r\n\tvar digest = CryptoJS.SHA512(salted);\r\n\tfor (var i = 1; i &lt; 5000; i++) {\r\n\t\tvar parsed = CryptoJS.enc.Utf8.parse(salted);\r\n\t\tvar cc = digest.concat(parsed)\r\n\t\t\tdigest = CryptoJS.SHA512(cc);\r\n\t}\r\n\tdigest = digest.toString(CryptoJS.enc.Base64);\r\n\r\n\treturn digest;\r\n};\r\n\r\n\/\/ Date formater to UTC\r\nvar formatDate = function (d) {\r\n\t\/\/ Padding for date creation\r\n\tvar pad = function (num) {\r\n\t\treturn (\"0\" + num).slice(-2);\r\n\t};\r\n\r\n\treturn [d.getUTCFullYear(),\r\n\t\tpad(d.getUTCMonth() + 1),\r\n\t\tpad(d.getUTCDate())].join(\"-\") + \"T\" +\r\n\t[pad(d.getUTCHours()),\r\n\t\tpad(d.getUTCMinutes()),\r\n\t\tpad(d.getUTCSeconds())].join(\":\") + \"Z\";\r\n};\r\n\r\nvar randomString = function (length) {\r\n\tvar text = \"\";\r\n\tvar possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\tfor (var i = 0; i &lt; length; i++) {\r\n\t\ttext += possible.charAt(Math.floor(Math.random() * possible.length));\r\n\t}\r\n\treturn text;\r\n};\r\n\r\nvar base64Encode = function (input) {\r\n\tvar keyStr = 'ABCDEFGHIJKLMNOP' +\r\n\t\t'QRSTUVWXYZabcdef' +\r\n\t\t'ghijklmnopqrstuv' +\r\n\t\t'wxyz0123456789+\/' +\r\n\t\t'=';\r\n\r\n\tvar output = \"\";\r\n\tvar chr1,\r\n\tchr2,\r\n\tchr3 = \"\";\r\n\tvar enc1,\r\n\tenc2,\r\n\tenc3,\r\n\tenc4 = \"\";\r\n\tvar i = 0;\r\n\r\n\tdo {\r\n\t\tchr1 = input.charCodeAt(i++);\r\n\t\tchr2 = input.charCodeAt(i++);\r\n\t\tchr3 = input.charCodeAt(i++);\r\n\r\n\t\tenc1 = chr1 &gt;&gt; 2;\r\n\t\tenc2 = ((chr1 &amp; 3) &lt;&lt; 4) | (chr2 &gt;&gt; 4);\r\n\t\tenc3 = ((chr2 &amp; 15) &lt;&lt; 2) | (chr3 &gt;&gt; 6);\r\n\t\tenc4 = chr3 &amp; 63;\r\n\r\n\t\tif (isNaN(chr2)) {\r\n\t\t\tenc3 = enc4 = 64;\r\n\t\t} else if (isNaN(chr3)) {\r\n\t\t\tenc4 = 64;\r\n\t\t}\r\n\r\n\t\toutput = output +\r\n\t\t\tkeyStr.charAt(enc1) +\r\n\t\t\tkeyStr.charAt(enc2) +\r\n\t\t\tkeyStr.charAt(enc3) +\r\n\t\t\tkeyStr.charAt(enc4);\r\n\t\tchr1 = chr2 = chr3 = \"\";\r\n\t\tenc1 = enc2 = enc3 = enc4 = \"\";\r\n\t} while (i &lt; input.length);\r\n\r\n\treturn output;\r\n}\r\n\r\nvar username = \"admin\";\r\nvar password = \"pass\";\r\nvar salt = \"salt\";\r\nvar secret = cipher(password, salt)\r\n\/\/ Generate nonce\r\nvar nonce = randomString(30);\r\n\r\n\/\/ Creation time of the token\r\nvar created = formatDate(new Date());\r\n\r\n\/\/ Generating digest from secret, creation and nonce\r\nvar salted = secret + '{' + salt + '}';\r\nvar hash = CryptoJS.SHA1(nonce + created + salted);\r\nvar digest = hash.toString(CryptoJS.enc.Base64);\r\n\r\n\/\/ Base64 Encode digest\r\nvar b64nonce = base64Encode(nonce);\r\n\r\n\/\/ Return generated token\r\nvar token = 'UsernameToken Username=\"' + username + '\", PasswordDigest=\"' + digest + '\", Nonce=\"' + b64nonce + '\", Created=\"' + created + '\"';\r\n\r\npostman.setGlobalVariable(\"token\", token);\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\/\/ Symfony SHA512 encryption provider var cipher = function (secret, salt) { var salted = secret + '{&#8217; + salt + &#8217;}&#8217;; var digest = CryptoJS.SHA512(salted); for (var i = 1; i &lt; 5000; i++) { var parsed = CryptoJS.enc.Utf8.parse(salted); var cc = digest.concat(parsed) digest = CryptoJS.SHA512(cc); } digest =&#8230; <a class=\"continue-reading-link\" href=\"https:\/\/kszyh.kisim.eu.org\/?p=316\"> Continue reading <span class=\"meta-nav\">&rarr; <\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92],"tags":[94,93,95,96],"class_list":["post-316","post","type-post","status-publish","format-standard","hentry","category-java-script","tag-postman","tag-rest","tag-security","tag-wsse"],"_links":{"self":[{"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/316","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=316"}],"version-history":[{"count":1,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/316\/revisions"}],"predecessor-version":[{"id":317,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/316\/revisions\/317"}],"wp:attachment":[{"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=316"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=316"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}