我正在使用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
其中:grant_type = authorization_code&代码= 12345678901234567890 它作为原始数据包含在体内。
如何将grant_type和代码参数放在正文上?
目前,我的代码以这种方式正式化:
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);
}
答案 0 :(得分:2)
在授权服务器完成授权过程之前,您可以使用过滤器拦截对令牌端点的请求。
这是我使用json作为正文而不是URL编码格式的OAuth2实现。
答案 1 :(得分:0)
添加atr.setAuthorizationCode("12345678901234567890");
以将身份验证代码设置为访问令牌请求。