I'm facing an authorization issue trying to use Segments APIs via a node.js client. Stop beating around the bush, below the part of it which manages the POST request and the authorization via the x-wsse headers:
var now = new Date();
var options = {
method: "POST",
hostname: "api3.omniture.com",
path: "/admin/1.4/rest/?method=Segments.Get",
json: true,
headers: {
"Content-Type": "application/json",
"Content-Length" : Buffer.byteLength(JSON.stringify(body)),
"x-wsse": 'UsernameToken Username="[username]:[company]", PasswordDigest="xxxxxxxxxxxxxxxxxxxxxxxxxx==", Nonce="yyyyyyyyyyyyyyyyyyyyyyyyyy", Created="'+now+'"'
}
};
As you see, I'm trying to replicate the x-wsse generated by the API Explorer, dynamically specifying the Created timestap via Date() JS class.
Node client is reporting me this error:
{"error":"Bad Request","error_description":"Unable to validate authentication.","error_uri":null}
I suppose the x-wsse PasswordDigest and Nonce values also continuously change at every request while here I put them static. If this was the reason for the issue, how dynamically insert also those parameters in the x-wsse header ?
Thanks a lot.
Yes, the
PasswordDigestandCreatedvalues are also dynamically generated, because they are based on the value you generate. I don't know node.js well enough to show you a node.js example, but here is a php example for what I do, with some comments: