Created
October 13, 2016 22:38
-
-
Save geoffroycochard/c73b2f460bb54b9ed86df17af8d5f8b6 to your computer and use it in GitHub Desktop.
OroPlatform API WSSE Header generation client Side in Angular2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { Injectable } from '@angular/core'; | |
import { Http, Response, Headers } from '@angular/http'; | |
import { Observable } from 'rxjs/Observable'; | |
import 'rxjs/add/operator/map'; | |
import 'rxjs/add/operator/catch'; | |
import { Account } from '../model/account-model'; | |
import hashes = require('crypto-js'); | |
import moment = require('moment'); | |
@Injectable() | |
export class AccountService { | |
private actionUrl: string; | |
private headers: Headers; | |
constructor(private _http: Http) { | |
this.actionUrl = 'http://dawkins.ut14php7.lo/app_dev.php/api/accounts/4625'; | |
// $userName = 'your username'; | |
// $userPassword = 'your password'; | |
// $nonce = uniqid(); | |
// $created = date('c'); | |
// $digest = base64_encode(sha1(base64_decode($nonce) . $created . $userPassword, true)); | |
// $digest = base64_encode(sha1($nonce . $created . $userPassword, true)); | |
var username = 'admin'; | |
var password = '289cb21479bc8818234b513511ac22981e3a43df'; | |
var nonce = ''; | |
var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; | |
var length = 13; | |
for(var i = 0; i < length; i++) { | |
nonce += possible.charAt(Math.floor(Math.random() * possible.length)); | |
} | |
//2016-07-21T11:50:37+00:00 | |
var now = moment.utc( new Date() ).format(); | |
var created = now; | |
console.log(created); | |
// // Generating digest from secret, creation and nonce | |
// var nonceDecode64 = hashes.enc.Base | |
var _sha1 = hashes.SHA1(nonce+created+password); | |
var digest = _sha1.toString(hashes.enc.Base64); | |
nonce = hashes.enc.Utf8.parse(nonce); | |
nonce = hashes.enc.Base64.stringify(nonce); | |
// var hash = hashes.SHA1(nonce+created+password); | |
// var digest = hashes.enc.Base64.stringify(hash); | |
var str = 'UsernameToken Username="'+username+'", PasswordDigest="'+digest+'", Nonce="'+nonce+'", Created="'+created+'"'; | |
console.log(str); | |
this.headers = new Headers(); | |
this.headers.append('Authorization', 'WSSE profile="UsernameToken"'); | |
this.headers.append('X-WSSE', str); | |
} | |
public GetAllAccounts = (): Observable<Account[]> => { | |
//noinspection TypeScriptUnresolvedFunction | |
return this._http.get(this.actionUrl, { headers: this.headers}) | |
.map((response: Response) => response.json()) | |
.catch(this.handleError); | |
} | |
private handleError(error: Response) { | |
console.error(error); | |
return Observable.throw(error.json().error || 'Server error'); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment