Spring security Spring OAuth2自定义请求-将参数像原始数据一样放在主体上

Spring security Spring OAuth2自定义请求-将参数像原始数据一样放在主体上,spring-security,http-headers,spring-security-oauth2,Spring Security,Http Headers,Spring Security Oauth2,我正在使用Spring Security OAuth2实现一个客户端,以便通过API使用资源,我必须像这样定制请求: POST https://example.com/v2/oauth2/token HTTP / 1.1 Authorization: Basic xxxXXXXxxXXXXXXxXXxxXX Content-Type: application / x-www-form-urlencoded Accept: application / json; charset = UTF-8

我正在使用Spring Security OAuth2实现一个客户端,以便通过API使用资源,我必须像这样定制请求:

POST https://example.com/v2/oauth2/token HTTP / 1.1
Authorization: Basic xxxXXXXxxXXXXXXxXXxxXX
Content-Type: application / x-www-form-urlencoded
Accept: application / json; charset = UTF-8

grant_type = authorization_code & code = 12345678901234567890
其中:授权类型=授权代码&代码=123456789012134567890 它作为原始数据包含在正文中

如何在主体上放置grant_类型和代码参数

目前,我的代码是这样形式化的:

AuthorizationCodeResourceDetails resource = new AuthorizationCodeResourceDetails ();
resource.setAccessTokenUri ( "https://example.com/v2/oauth2/token");
resource.setClientId ( "xxxxx");
resource.setClientSecret ( "xxxxx");
resource.setGrantType ( "authorization_code");
resource.setUseCurrentUri (false);
AccessTokenRequest atr = new DefaultAccessTokenRequest ();
atr.setPreservedState (new Object ());
atr.setAuthorizationCode(authCode);

AuthorizationCodeAccessTokenProvider provider = new AuthorizationCodeAccessTokenProvider ();

try {
OAuth2AccessToken accessToken = provider.obtainAccessToken (resource, atr);
}
catch (Exception e) {
System.out.println ("DEBUG" + e);
}

添加atr.setAuthorizationCode(“123456789001234567890”)将身份验证代码设置为访问令牌请求。

在授权服务器完成授权过程之前,您可以使用筛选器拦截对令牌端点的请求

这是我的OAuth2实现,使用json作为主体,而不是URL编码格式


我忘记粘贴了。。。但是它是无关紧要的,参数被放在头上而不是正文上。好的,
AccessTokenRequest
是一个
MultiValueMap
被传递到请求中并转换成HTTP头。我不确定是否还有其他方法,但根据我的理解,您可能必须使用
restemplate
或其他方法构建请求。再说一次,只是我的意见。