public SOAPHeaderElement tokenPassport() {
Long timeStamp = System.currentTimeMillis() / 1000L;
System.out.println("Timestamp : " + timeStamp);
String nonce = RandomStringUtils.randomAlphanumeric(20);
TokenPassport tokenPassport = new TokenPassport();
tokenPassport.setAccount(account_Id);
tokenPassport.setConsumerKey(consumer_Key);
tokenPassport.setNonce(nonce);
TokenPassportSignature tokenSignature = new TokenPassportSignature();
tokenSignature.setAlgorithm(algorithm);
tokenSignature.set_value(getSignature(timeStamp,nonce));
tokenPassport.setSignature(tokenSignature);
tokenPassport.setTimestamp(timeStamp);
tokenPassport.setToken(token_Id);
return new SOAPHeaderElement("urn:messages_" + CURRENT_VERSION + ".
platform.webservices.netsuite.com","tokenPassport",tokenPassport);
}
public String getSignature(Long timeStamp, String nonce) {
String baseString = account_Id + "&" + consumer_Key + "&" + token_Id + "&" + nonce + "&" + Long.toString(timeStamp);
String key = consumer_Secret + '&' + token_Secret;
String signature = computeShaHash(baseString, key, "HmacSHA256");
return signature;
}
public String computeShaHash(String baseString, String key, String algorithm) {
byte[] bytes = key.getBytes();
SecretKeySpec mySigningKey = new SecretKeySpec(bytes, algorithm);
try {
Mac messageAuthenticationCode = Mac.getInstance(algorithm);
messageAuthenticationCode.init(mySigningKey);
byte[] hash = messageAuthenticationCode.doFinal(baseString.getBytes());
String result = new String(Base64.encodeBase64(hash, false));
return result;
} catch(Exception e) {
writeLogFile("Exception in creating Signature : " + e.toString());
}
return null;
}
public void netsuiteLogin() {
stub = (NetSuiteBindingStub) nsPort;
stub.clearHeaders();
stub.setHeader(tokenPassport());
}