darrenhillconsulting
08/28/2023, 8:43 PMPre-request Script
for Postman to request an Access Token via Oauth2 Client Credentials? I think I'm close, but something just isn't rightbattk
08/28/2023, 9:08 PMFred Pope
08/28/2023, 9:31 PMlet account = pm.environment.get("ACCOUNT");
let consumerKey = pm.environment.get("CONSUMER_KEY");
let consumerSecret = pm.environment.get("CONSUMER_SECRET");
let tokenId = pm.environment.get("TOKEN_ID");
let tokenSecret = pm.environment.get("TOKEN_SECRET");
let timestamp = new Date().getTime().toString().substring(0, 10);
let nonce = CryptoJS.lib.WordArray.random(10).toString();
let baseString = `${account}&${consumerKey}&${tokenId}&${nonce}&${timestamp}`;
let key = `${consumerSecret}&${tokenSecret}`;
let signature = CryptoJS.HmacSHA256(baseString, key).toString(CryptoJS.enc.Base64);
pm.environment.set("signature", signature);
pm.environment.set("nonce", nonce);
pm.environment.set("timestamp", timestamp);
Fred Pope
08/28/2023, 9:32 PM<soapenv:Envelope xmlns:xsd="<http://www.w3.org/2001/XMLSchema>" xmlns:soapenv="<http://schemas.xmlsoap.org/soap/envelope/>" xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>">
<soapenv:Header>
<platformMsg:searchPreferences soapenv:mustUnderstand="0" soapenv:actor="<http://schemas.xmlsoap.org/soap/actor/next>" xmlns:platformMsg="urn:<http://messages_2021_1.platform.webservices.netsuite.com|messages_2021_1.platform.webservices.netsuite.com>">
<platformMsg:bodyFieldsOnly>false</platformMsg:bodyFieldsOnly>
<platformMsg:pageSize>200</platformMsg:pageSize>
</platformMsg:searchPreferences>
<ns2:tokenPassport soapenv:mustUnderstand="0" soapenv:actor="<http://schemas.xmlsoap.org/soap/actor/next>" xmlns:ns2="urn:<http://messages_2021_1.platform.webservices.netsuite.com|messages_2021_1.platform.webservices.netsuite.com>">
<ns1:account xmlns:ns1="urn:core_2021_1.platform.webservices.netsuite.com">{{ACCOUNT}}</ns1:account>
<ns3:consumerKey xmlns:ns3="urn:core_2021_1.platform.webservices.netsuite.com">{{CONSUMER_KEY}}</ns3:consumerKey>
<ns4:token xmlns:ns4="urn:core_2021_1.platform.webservices.netsuite.com">{{TOKEN_ID}}</ns4:token>
<ns5:nonce xmlns:ns5="urn:core_2021_1.platform.webservices.netsuite.com">{{nonce}}</ns5:nonce>
<ns6:timestamp xmlns:ns6="urn:core_2021_1.platform.webservices.netsuite.com">{{timestamp}}</ns6:timestamp>
<ns7:signature algorithm="HMAC_SHA256" xmlns:ns7="urn:core_2021_1.platform.webservices.netsuite.com">{{signature}}</ns7:signature>
</ns2:tokenPassport>
</soapenv:Header>
<soapenv:Body>
darrenhillconsulting
08/29/2023, 7:50 PMhttps://${accountID}.<http://suitetalk.api.netsuite.com/services/rest/auth/oauth2/v1/token|suitetalk.api.netsuite.com/services/rest/auth/oauth2/v1/token>
,
'exp': currentTimestamp + 3000, // expiry time is 50 minutes from time of creation
'iat': currentTimestamp
};
function generateJwt() {
eval(pm.collectionVariables.get('jsrsasign-js')); // import javascript jsrsasign
var sHeader = JSON.stringify(header);
var sPayload = JSON.stringify(payload);
var signedToken = KJUR.jws.JWS.sign(header.alg, sHeader, sPayload, jwtPrivateKey);
pm.environment.set('jwt_signed', signedToken);
// console.log('jwt', signedToken);
}
var navigator = {}; // fake a navigator object for the lib
var window = {}; // fake a window object for the lib
if (pm.collectionVariables.has('jsrsasign-js')) generateJwt();darrenhillconsulting
08/29/2023, 7:51 PMbattk
08/29/2023, 8:11 PMdarrenhillconsulting
08/30/2023, 1:18 PM