我目前正在使用spring和oauth开发 Multi-Tenancy 应用程序。每个租户将拥有不同的数据库。如果我的网址是tenant1.xxx.com,则它将使用tenant1数据库,等等。

我的请求已使用AbstractRoutingDataSource成功路由,但未成功通过身份验证。因此,当我询问访问 token 时,它仍使用默认数据源。我认为我的问题出在oauth2配置中,该配置设置了TokenStore等数据源。

@Autowired
private DataSource dataSource;

@Bean
public TokenStore tokenStore() {
    return new JdbcTokenStore(dataSource);
}

无论如何, token 存储可以根据当前租户选择数据源吗?

最佳答案

让我尝试给出解决方案

1)如果检查JdbcTokenStore内的代码,那么我们会发现它在JdbcTempaltes内使用,因此在这种情况下,JPA或Hibernate路由将不起作用,这是您必须实现org.springframework.security.oauth2的解决方案的一部分。 JPA实现的provider.token.TokenStore。

2)如果您不喜欢第1种解决方案,那么您也可以实现AbstractRoutingDataSource,并在创建TokenStore时传递路由数据源。

关于java - 如何为 Multi-Tenancy 配置Spring Oauth2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43842770/

10-08 21:07