I have created a Spring Security OAuth2 server using a example from https://github.com/royclarkson/spring-rest-service-oauth
The OAuth2 authentication request in CURL command is as below. I want the equivalent syntax in Angular2.
curl -X POST -vu clientapp:123456 http://localhost:8080/oauth/token -H "Accept: application/json" -d "password=spring&username=roy&grant_type=password&scope=read%20write&client_secret=123456&client_id=clientapp" Here is what I tried:
import { Injectable } from '@angular/core'; import {Http, Headers, RequestOptions, RequestMethod} from '@angular/http'; import {Router} from '@angular/router'; @Injectable() export class AuthService { isAuthenticated: boolean = false; userId; constructor(private http: Http, private router: Router) { } login(usercreds){ let client_id = 'clientapp'; let client_secret = '123456'; var basicheader = btoa(client_id + ':' + client_secret); console.log(basicheader); var headers = new Headers(); headers.append('Authorization', 'Basic' + basicheader); headers.append('Accept', 'application/json'); headers.append('Content-Type', 'application/json'); //let options = new RequestOptions( {method: RequestMethod.Post, headers: headers }); var creds = 'username=' + usercreds.username + '&password=' + usercreds.password+'credentials=true&grant_type=password&scope=read%20write&client_secret=123456&client_id=clientapp'; console.log(creds); return new Promise((resolve) => { this.http.post('http://localhost:8080/oauth/token', JSON.stringify(creds), {headers:headers}).subscribe((data) => { if(data.json().success) { this.userId = data.json().userId; this.isAuthenticated = true; } resolve(this.isAuthenticated); }) }) } } But when I launch this application the Google Chrome browser returns this error in developer mode:
- XMLHttpRequest cannot load http://localhost:8080/oauth/token. Response for preflight has invalid HTTP status code 401
- EXCEPTION: Response with status: 0 for URL: null