bti*_*nay 10 spring-security basic-authentication spring-boot spring-security-oauth2
我正在开发一个应用程序,允许经过身份验证的用户创建OAuth2承载令牌,以便与组织发布的API一起使用.这个想法是允许用户自己生成/撤销这样的令牌,类似于GitHub的Personal API令牌.然后,用户可以使用发布的令牌获得对受保护资源的编程访问.在此配置中,OAuth"客户端","授权服务器"和"资源服务器"属于组织.目前,所有这些服务都驻留在同一个流程中.
为此,我正在尝试支持资源所有者密码凭据授予类型.实施环境包括以下内容:
实现的一个约束是无法访问存储的密码.此处理委托给执行实际身份验证的内部Web服务.
由于无法访问存储密码的限制,因此无法使用默认配置,DaoAuthenticationProvider因为它需要访问UserDetails由提供程序返回的对象提供的密码UserDetailsService.
我的猜测是我需要AuthenticationProvider用自定义实现替换它.但是,所有这样做的尝试似乎都没有生效.
以下似乎在parent引用中正确注册AuthenticationManager,但未在运行时委托(由于DaoAuthenticationProvider优先权):
@Configuration
public class SecurityConfig extends GlobalAuthenticationConfigurerAdapter {
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(new AuthenticationProvider() {
@Override
public boolean supports(Class<?> authentication) {
// For testing this is easier, but should check for UsernamePasswordAuthentication.class
return true;
}
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
// Perform custom logic...
return authentication;
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
似乎无论我尝试什么(参见下面的参考资料),我总是在其方法中调用ProviderManager时获得以下两个提供者:BasicAuthenticationFilterAuthentication authResult = authenticationManager.authenticate(authRequest)doFilter
[
org.springframework.security.authentication.AnonymousAuthenticationProvider@366815e4,
org.springframework.security.authentication.dao.DaoAuthenticationProvider@5da3e311
]
我认为这可能是一个结果AuthorizationServerSecurityConfigurer的clientCredentialsTokenEndpointFilter方法.但是,此类已标记final,因此无法自定义.
任何建议或指示将不胜感激.
我尝试/研究过的事情:
如果我理解正确,则需要在密码授予中为用户提供一个自定义身份验证管理器。没有为建筑工地方法:AuthorizationServerEndpointsConfigurer.authenticationManager(AuthenticationManager)。以及使用它的示例:
@Configuration
@EnableAuthorizationServer
protected static class OAuth2Config extends AuthorizationServerConfigurerAdapter {
@Autowired
private AuthenticationManager authenticationManager;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager);
}
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10662 次 |
| 最近记录: |