angular-wsse
Version:
A Wsse service to generate the header needed for API calls
56 lines (36 loc) • 2.26 kB
Markdown
# 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
1. bower : `bower install angular-wsse` | npm : `npm install angular-wsse --save`
2. Modify your application to include `wsseservice` in your application dependencies.
3. 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
1. `wsseservice.generateCreatedDate()` - Return current date in ISO format.
2. `wsseservice.generateNonce()` - Return a random Nonce.
3. `wsseservice.generateEncodedPassword(password, salt, iteration)` - Return the encoded password. Based on SymfonY2 password encoding.
4. `wsseservice.generatePasswordDigest(nonce, createdDate, encodedPassword)` - Return the SHA1 encoded password digest created with the Nonce and the createdDate.
5. `wsseservice.getWSSEHeader(username, password)` - Return the WSSE string you need for the header.
## License
This project is released over [MIT License](http://opensource.org/licenses/MIT)
## Any contribution welcome