Spring安全性-Oauth实现
我正在尝试实现一个与oauth2类似的授权服务,只是它不需要用户名和密码来生成密钥和刷新令牌。但是从我发现的情况来看,您似乎还需要给它一个用户和密码。有什么解决办法吗 我的代码是:Spring安全性-Oauth实现,spring,spring-security,Spring,Spring Security,我正在尝试实现一个与oauth2类似的授权服务,只是它不需要用户名和密码来生成密钥和刷新令牌。但是从我发现的情况来看,您似乎还需要给它一个用户和密码。有什么解决办法吗 我的代码是: @Configuration public class AuthorizationServerConfiguration implements AuthorizationServerConfigurer { @Autowired private PasswordEncoder passwordEnc
@Configuration
public class AuthorizationServerConfiguration implements AuthorizationServerConfigurer {
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private DataSource dataSource;
@Autowired
private AuthenticationManager authenticationManager;
@Override
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
security.checkTokenAccess("isAuthenticated()").tokenKeyAccess("permitAll()");
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.jdbc(dataSource).passwordEncoder(passwordEncoder);
}
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager);
}
}
@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Bean
public AuthenticationManager getAuthenticationManager() throws Exception {
return super.authenticationManagerBean();
}
@Bean
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
}
根据您的要求,您可以使用JWT令牌。 它支持RS256、HS256等多种算法 我将以HS256作为参考 在授权服务器中,您需要基于某个密钥生成令牌。 在客户端。您需要使用相同的密钥验证令牌 如果您不想在授权服务器和客户端服务器之间共享密钥 您可以使用具有公钥和私钥概念的RS256 对于实现,您需要添加一个过滤器,用于检查每个调用的头中的令牌
有关实现的相关信息,请参阅本文。如果我理解正确,您希望删除服务器到服务器身份验证,因为您可能不需要它,因为它是一个客户端应用程序。我们不会的,至少我还没有找到一个方法,所以用一些琐碎的东西,让它保持原样。如果有人找到了方法,请分享。是的,这就是我想要的