You need to sign in to do that
Don't have an account?
Kiran Naidu 7
NetSuite oauth1.0 - oauth_signature_method= hmac-sha256
Hi All,
I am trying to integrate salesforce with Netsuite using Oauth 1.0 with oauth_signature_method= hmac-sha256
I have the below code and trying to Get the Customer details
String nonce = String.valueOf(Crypto.getRandomLong());
String tnow = String.valueOf(DateTime.now().getTime()/1000);
String baseString = '7156829&ecbb91e9da54d2fb032284c475a19359ab93bf7f4f9397ee0f88de66c8408e7f&b8410d1e3f16268240a7627f26b60b54c8e089109340ffaf892ba916ca2c1b93&'+nonce+'&'+tnow+'';
system.debug('baseString'+ baseString);
String consumerSecret = '4ed07ff01980f0aa7afaaabba0d754769206ababb3e6155cf4908b7c3784caba';
String tokenSecret = '9f0c2fd6348a851dc1054f243da4883b9588c6724a4a65f0999c008bcd09dd5c';
String signingkey = consumerSecret+'&'+tokenSecret;
system.debug('signingkey'+ signingkey);
//Blob sig = Crypto.generateMac('hmacSHA256', Blob.valueOf(baseString), Blob.valueOf(consumerSecret+'&'+(tokenSecret!=null ? tokenSecret : '')));
Blob sig = Crypto.generateMac('hmacSHA256', Blob.valueOf(baseString), Blob.valueOf(signingkey));
String signature = EncodingUtil.urlEncode(EncodingUtil.base64encode(sig), 'UTF-8');
system.debug('sig'+ sig);
System.debug('Signature: '+signature);
Http http = new Http();
HttpRequest request = new HttpRequest();
String AuthString = 'OAuth realm=XXXXXXX", oauth_consumer_key="ecbb91e9da54d2fb032284c475a19359ab93bf7f4f9397ee0f88de66c8408e7f", oauth_token="b8410d1e3f16268240a7627f26b60b54c8e089109340ffaf892ba916ca2c1b93", oauth_signature_method="HMAC-SHA256", oauth_timestamp="'+tnow+'", oauth_nonce="'+nonce+'", oauth_version="1.0", oauth_signature="'+signature+'"';
System.debug('Authorization: '+AuthString);
request.setEndpoint('https://xxxxxx.suitetalk.api.netsuite.com/services/rest/record/v1/customer/7');
request.setMethod('GET');
request.setHeader('Authorization', AuthString);
//request.setHeader('Content-Type', 'application/x-www-form-urlencoded');
HttpResponse response = http.send(request);
System.debug(response.getBody());
but I get below Error
{"type":"https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2","title":"Unauthorized","status":401,"o:errorDetails":[{"detail":"Invalid login attempt.","o:errorCode":"INVALID_LOGIN_ATTEMPT"}]}
I verified Audit log in NetSuite and I see "Invalid Signature"
Can anyone help/suggest me to fix this issue.
I am trying to integrate salesforce with Netsuite using Oauth 1.0 with oauth_signature_method= hmac-sha256
I have the below code and trying to Get the Customer details
String nonce = String.valueOf(Crypto.getRandomLong());
String tnow = String.valueOf(DateTime.now().getTime()/1000);
String baseString = '7156829&ecbb91e9da54d2fb032284c475a19359ab93bf7f4f9397ee0f88de66c8408e7f&b8410d1e3f16268240a7627f26b60b54c8e089109340ffaf892ba916ca2c1b93&'+nonce+'&'+tnow+'';
system.debug('baseString'+ baseString);
String consumerSecret = '4ed07ff01980f0aa7afaaabba0d754769206ababb3e6155cf4908b7c3784caba';
String tokenSecret = '9f0c2fd6348a851dc1054f243da4883b9588c6724a4a65f0999c008bcd09dd5c';
String signingkey = consumerSecret+'&'+tokenSecret;
system.debug('signingkey'+ signingkey);
//Blob sig = Crypto.generateMac('hmacSHA256', Blob.valueOf(baseString), Blob.valueOf(consumerSecret+'&'+(tokenSecret!=null ? tokenSecret : '')));
Blob sig = Crypto.generateMac('hmacSHA256', Blob.valueOf(baseString), Blob.valueOf(signingkey));
String signature = EncodingUtil.urlEncode(EncodingUtil.base64encode(sig), 'UTF-8');
system.debug('sig'+ sig);
System.debug('Signature: '+signature);
Http http = new Http();
HttpRequest request = new HttpRequest();
String AuthString = 'OAuth realm=XXXXXXX", oauth_consumer_key="ecbb91e9da54d2fb032284c475a19359ab93bf7f4f9397ee0f88de66c8408e7f", oauth_token="b8410d1e3f16268240a7627f26b60b54c8e089109340ffaf892ba916ca2c1b93", oauth_signature_method="HMAC-SHA256", oauth_timestamp="'+tnow+'", oauth_nonce="'+nonce+'", oauth_version="1.0", oauth_signature="'+signature+'"';
System.debug('Authorization: '+AuthString);
request.setEndpoint('https://xxxxxx.suitetalk.api.netsuite.com/services/rest/record/v1/customer/7');
request.setMethod('GET');
request.setHeader('Authorization', AuthString);
//request.setHeader('Content-Type', 'application/x-www-form-urlencoded');
HttpResponse response = http.send(request);
System.debug(response.getBody());
but I get below Error
{"type":"https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2","title":"Unauthorized","status":401,"o:errorDetails":[{"detail":"Invalid login attempt.","o:errorCode":"INVALID_LOGIN_ATTEMPT"}]}
I verified Audit log in NetSuite and I see "Invalid Signature"
Can anyone help/suggest me to fix this issue.
The issue here seems that the endpoint denying the Login Attempt. Can you try to send this request via Postman to isolate if it is an issue from the endpoint team/IP restrictions?
Related: https://help.salesforce.com/articleView?id=sf.remoteaccess_oauth_1_flows.htm&type=5
Similar post from past: https://salesforce.stackexchange.com/questions/103564/oauth-consumer-key-and-or-signature-not-included-in-request-parameters-or-author/103592#103592
Also recommend ensuring the parameter being passed in below line of your code is following the right syntax
If this information helps, please mark the answer as best. Thank you
Using postman, I am successful in getting response.
String AuthString = 'OAuth realm=XXXXXXX",// I am using Account Id value here just that I could not share that information here replaced with XXXXXXX
I have tried possible ways, but still I see the same issue.
Were you able to fix this issue? I'm facing the same issue when switching the authentication method to HMAC256.
Thanks,
Lavanya
Kiran,
Can you sare the code used to Authenticat with Restlets?
I am getting an InvalidTimestamp Error