我有一个OAuth应用程序。 身份验证包含两个步骤:获取访问令牌,使用提供的访问令牌发出请求。
是否可以将Spring安全性配置为提供客户端ID和客户端机密作为https://localhost.com/api/endpoint?client_id=xxxx&client_secret=yyyy等请求参数的访问权限?
答案 0 :(得分:0)
答案很简单:
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints
.tokenGranter(new CompositeTokenGranter(
Arrays.asList(resourceOwnerPasswordTokenGranter(), clientCredentialsTokenGranter())))
.authenticationManager(providerManager())
.clientDetailsService(clientDetailsService())
.tokenServices(defaultTokenServices());
}
private TokenGranter resourceOwnerPasswordTokenGranter() {
return new ResourceOwnerPasswordTokenGranter(
new ProviderManager(Arrays.asList(authenticationProvider())),
defaultTokenServices(),
clientDetailsService(),
defaultOAuth2RequestFactory());
}
private TokenGranter clientCredentialsTokenGranter() {
return new ClientCredentialsTokenGranter(
defaultTokenServices(),
clientDetailsService(),
defaultOAuth2RequestFactory());
}
我添加了新的CompositeTokenGranter,其中列出了2个格式:ResourceOwnerPassswordTokenGranter(用于clientId + clientPassword +用户名+密码验证)和ClientCredentialsTokenGranter(用于clientId + clientPassword验证)。
修改强>
看起来我的问题不正确。为此表示歉意。我对授权服务器进行了更改。所以它只适用于/ oauth / token。 如何修复问题我现在还不知道,但是当找到解决方案时我会更新这个问题。