angular-wsse
This is an angular service to help generate a WSSE Header for API calls.
It is developed based on the John Papa's style guide (https://github.com/johnpapa/angular-styleguide#services).
Installation
- bower :
bower install angular-wsse
| npm :npm install angular-wsse --save
- Modify your application to include
wsseservice
in your application dependencies. - Add the following to get the global variable CryptoJS working :
"overrides": {
"crypto-js": {
"main": "crypto-js.js"
}
}
This Service uses CryptosJS (https://code.google.com/archive/p/crypto-js/) to encode and decode things (SHA1, SHA512, Base64, Utf8) and has a dependency to the package crypto-js (https://www.npmjs.com/package/crypto-js)
How to use it
To generate a wsse header you will need the encoded password and the username.
You can generate the encoded password with :
wsseservice.generateEncodedPassword(password, salt, iteration);
- password : the plain password given by the user.
- salt : the salt used to encode the password.
- iteration : the number of iteration needed to encode the password (set in the parameters in Symfony2 for instance).
When you have the encoded password you just need to do :
wsseservice.getWSSEHeader(username, password);
This will give you a string looking like this : UsernameToken Username="admin", PasswordDigest="u/TRqCu7nXjZRA5sX7bC5NZodsQ=", Nonce="NDM2YTYxZjVkMTA2YmE3MQ==", Created="2015-06-10T15:07:47Z"
You will need so set in the X-WSSE header.
Using
Methods
wsseservice.generateCreatedDate()
- Return current date in ISO format.wsseservice.generateNonce()
- Return a random Nonce.wsseservice.generateEncodedPassword(password, salt, iteration)
- Return the encoded password. Based on SymfonY2 password encoding.wsseservice.generatePasswordDigest(nonce, createdDate, encodedPassword)
- Return the SHA1 encoded password digest created with the Nonce and the createdDate.wsseservice.getWSSEHeader(username, password)
- Return the WSSE string you need for the header.
License
This project is released over MIT License