我的批处理必须使用OAuth2与授予类型的客户端凭据
连接到Web服务以下是代码:
ClientCredentialsResourceDetails resource = new ClientCredentialsResourceDetails();
resource.setAccessTokenUri(accessTokenUri);
resource.setClientId(clientId);
resource.setClientSecret(clientSecret);
ClientCredentialsAccessTokenProvider provider = new ClientCredentialsAccessTokenProvider();
OAuth2AccessToken accessToken = provider.obtainAccessToken(resource, new DefaultAccessTokenRequest());
当执行此代码时,它会发出一个请求,其中grant_type在post值中,但clientId和客户端机密将放在带有经典基本auth标头的标头中:
Authorization: Basic bXktY2xpZW50LWlkIDpteS1jbGllbnQtc2VjcmV0
如果我解码字符串bXktY2xpZW50LWlkIDpteS1jbGllbnQtc2VjcmV0
decode64(bXktY2xpZW50LWlkIDpteS1jbGllbnQtc2VjcmV0) -> my-client-id:my-client-secret
通常没问题。但是我们必须使用的Web服务不支持这一点,我们必须将client-id和client-secret放在post-value中,如grant-type。
有没有办法实现这一目标?一种配置如何发送client-id和client-secret的方法?
迈克尔
答案 0 :(得分:6)
setClientAuthenticationScheme
类中有一个方法ClientCredentialsResourceDetails
。默认值为AuthenticationScheme.header
,您可能需要将其设置为AuthenticationScheme.form
。