如何使用正确的标头使用Angular 6发送OAuth2 POST请求?

时间:2018-10-08 07:28:29

标签: angular oauth oauth-2.0 jwt

我需要向Spring Boot OAuth 2授权服务器发送发布请求以获取JWT令牌?使用邮递员,我获得了令牌,并且Auth Server运行正常。但是,使用Angular,我很难确定正确的帖子请求格式?

这是我目前使用的方法。

login() {
  const url = 'http://localhost:9090/oauth/token';

  const data = {
    'grant_type': 'password',
    'username': 'username',
    'password': 'password'
  };

  const reqH = new HttpHeaders({
    'Content-Type': 'application/x-www-urlencoded',
    'Authorization': 'Basic ' + btoa('client-id' + ':' + 'secret'),
    'grant_type': 'password',
    'username': 'administrator%40divinedragon.com',
    'password': 'password'
  });

  return this.http.post('http://localhost:9090/oauth/token', data, {
    headers: reqH
  });
}

使用此方法时,出现以下错误。

  

HttpErrorResponse {标题:HttpHeaders,状态:400,statusText:“确定”,网址:“ http://localhost:9090/oauth/token”,确定:false,…},

     

错误:{错误:“ invalid_request”,错误描述:“缺少授权类型”}

非常感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

 let headers: HttpHeaders = new HttpHeaders();
  headers = headers.append('Content-Type', 'application/x-www-urlencoded');
  headers = headers.append('Authorization' : 'Basic ' + btoa('client-id' + ':' + 
  'secret');
  headers = headers.append('grant_type': 'password', 'username': 'administrator%40divinedragon.com', 'password': 'password');

答案 1 :(得分:0)

var body = "grant_type=password&username=username&password=password&client_id=clientid";

return this.http.post(`${this.oauth.URL}/oauth/token`, body, {
  headers: new HttpHeaders({
    Authorization: "Basic +token",
    "Content-type": "application/x-www-form-urlencoded;charset=utf-8"
  })
});

答案 2 :(得分:0)

keyboardVerticalOffset
相关问题