Spring Boot OAuth2`AbstractTokenGranter.validateGrantType()`方法中发生了什么?

时间:2018-08-20 11:44:38

标签: java spring-boot spring-security oauth-2.0 spring-security-oauth2

我正在使用OAuth2保护Spring Cloud / Spring Boot微服务,所有这些似乎都很好地连接到了授权服务器中。但是,当我通过邮递员向/oauth/token发送POST请求以使用grant_type = client_credentials获取访问令牌时,我得到以下响应:

{
    "error": "invalid_client",
    "error_description": "Unauthorized grant type: client_credentials"
}

但是,在注册OAuth客户端的oauth_client_details数据库表中,我对发出此请求的当前客户端进行了以下设置;

authorized_grant_types = `password, authorization_code, client_credentials, refresh_token`

因此,我自由地调试了Spring Boot的整个oauth流程,并发现AbstractTokenGranter.validateGrantType(String grantType, ClientDetails clientDetails)方法中发生了一件非常有趣的事情。请参见下图;

enter image description here

所以我想了解一下这里可能发生的情况,因为这对我来说实际上是深不可测的。

1 个答案:

答案 0 :(得分:2)

好像您正在使用RDBMS。在 it('kendo-grid element should contain resizable attribute with "true" value', () => { const element = fixture.debugElement.nativeElement.querySelector('kendo-grid'); expect(element.resizable).toBeTruthy(); }); 表中插入客户记录时,请确保oauth_client_details列的值中没有空格。

值应该是这样的(逗号后不能有空格):

authorized_grant_types