我有一个使用 JDBC 实现的 spring boot oauth2 服务器。它通过@EnableAuthorizationServer 配置为授权服务器。
我想水平扩展该应用程序,但它似乎无法正常工作。
仅当我有一个服务器实例(Pod)时,我才能连接。
我使用来自另一个客户端服务的 autorisation_code_client 授权来获取令牌。因此,首先客户端服务将用户重定向到 oauth2 服务器表单,然后一旦用户通过身份验证,他应该被重定向到客户端服务,并在 url 上附加代码,最后客户端使用该代码来请求 oauth2 服务器再次并获取token。
如果我有多个 oauth2-server 实例,则用户根本不会被重定向。就一个实例来说,效果很好。
当我实时检查两个实例的日志时,我可以看到身份验证在其中一个实例上进行。我没有任何具体错误,用户只是没有被重定向。
有没有办法将 oauth2-server 配置为无状态或其他方式来解决该问题?
这是我的配置,AuthorizationServerConfigurerAdapter 实现。
@Configuration
public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource oauthDataSource() {
return DataSourceBuilder.create().build();
}
@Autowired
@Qualifier("authenticationManagerBean")
private AuthenticationManager authenticationManager;
@Bean
public JdbcClientDetailsService clientDetailsSrv() {
return new JdbcClientDetailsService(oauthDataSource());
}
@Bean
public TokenStore tokenStore() {
return new JdbcTokenStore(oauthDataSource());
}
@Bean
public ApprovalStore approvalStore() {
return new JdbcApprovalStore(oauthDataSource());
}
@Bean
public …Run Code Online (Sandbox Code Playgroud)