如何为多租户配置Spring Oauth2

3
我正在使用Spring和OAuth开发多租户应用程序,每个租户将有不同的数据库。如果我的 URL 是 tenant1.xxx.com,则它将使用 tenant1 数据库,以此类推。
我的请求已经成功地通过 AbstractRoutingDataSource 路由,但身份验证没有成功。因此,当我请求访问令牌时,它仍然使用默认数据源。我认为我的问题在于 OAuth2 配置中设置了 TokenStore 等数据源。
@Autowired
private DataSource dataSource;

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

有没有办法让令牌存储根据当前租户选择数据源?

你想选择数据源还是想在同一个数据库中保存多租户? - Jaiwo99
我想选择数据源。这样每个租户都可以为oauth使用不同的数据库。 - first_time_user
我的问题也是一样,你找到答案了吗? - Irfan Nasim
1个回答

1
让我尝试给出解决方案:
1)如果您检查JdbcTokenStore内部的代码,那么我们会发现它正在使用JdbcTemplate,因此JPA或Hibernate路由将不起作用,在这种情况下,解决方案的一部分是实现org.springframework.security.oauth2.provider.token.TokenStore与JPA实现。
2)如果您不喜欢解决方案1,则还可以实现AbstractRoutingDataSource,并在创建TokenStore时传递路由数据源。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接