Angular HttpPost到Oauth2返回401

时间:2017-08-17 15:36:54

标签: angular ionic-framework oauth-2.0

我想在我的离子应用程序中使用oauth2,但我收到错误:

  

无法加载资源:服务器响应状态为401()

     

错误:http://localhost:8080/oauth/token的Http失败响应:401 OK

响应:

  

{"时间戳":1502983544253,"状态":401,"错误":"未授权""消息&# 34;:"访问此资源需要完全身份验证","路径":" / oauth / token"}

角度函数:

login(username, password) : Observable<any> {

 let params: HttpParams = new HttpParams();
 params.set('username', username);
 params.set('password', password);
 params.set('client_id', this.clientId);
 params.set('client_secret', this.clientSecret);
 params.set('grant_type', 'password');


 let headers = new HttpHeaders();
 headers.set('Content-Type', 'application/x-www-form-urlencoded');

 return this.http.post(this.EndPointUrl, {
   params:params
 }, { headers:headers}).map(this.handleData).
   catch(this.handleError);  }

所有参数都是正确的。

curl -X POST --user 'U:P' -d 'grant_type=password&username=USER&password=PASS' localhost:8080/oauth/toke

返回

{"access_token":"d88c1c5e-d2c0-4c96-9e69-a62816d0a5e8","token_type":"bearer","refresh_token":"8f82f0b0-38a3-4c05-9590-43d3ec2f36b9","expires_in":3599,"scope":"read write"}

我可以使用PostMan和curl获取令牌,我的服务器中的CORS已为此端点启用,因此我认为auth服务器正常工作。

有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:0)

尝试添加此内容 headers.set('Authentication', 'Basic client_id:client_secret');(在Base 64中)

答案 1 :(得分:0)

问题依赖于此。很可能来自角度4.3.4的HTTPClient((@ angular / common / http)目前不能与离子一起工作。使用来自角度4.1.3的Http(@ angular / http)代码可以正常工作。