如何在新的 Spring Authorization 服务器中实现多租户

Arf*_*leb 12 spring-security multi-tenant oauth-2.0 spring-boot

授权服务器链接:https ://github.com/spring-projects/spring-authorization-server

该项目几乎拥有 OAuth 和身份提供商方面的所有内容。我的问题是,如何实现该级别的多租户Identity provider

我知道一般来说有多种方法可以实现多租户。

我感兴趣的场景是这样的:

  1. 一个组织向多个租户提供服务。
  2. 每个租户关联一个单独的数据库(数据隔离包括用户数据)
  3. 当用户访问dedicated Front-end app(per tenant)并协商访问令牌时Identity provider
  4. Identity provider然后识别租户(基于标头/域名)并access token生成tenant_id
  5. 然后将其access token传递给下游服务,实习生可以提取tenant_id并决定数据源

我对上述所有步骤都有一个大概的了解,但我不确定第4点。

我不确定如何在身份提供程序上为不同租户配置不同的数据源?如何在Token中添加tenant_id?

问题链接:https://github.com/spring-projects/spring-authorization-server/issues/663#issue-1182431313

Sar*_*nan 1

这与 Spring auth Server 无关,但与我们可以考虑的方法有关#4

我记得上次我们实施类似的方法时,我们有以下选项

  1. 要为用户提供唯一的电子邮件地址,从而使用全局数据库对用户进行身份验证并进行身份验证,请设置租户上下文。
  2. 如果用户在超过 1 个租户中操作,在身份验证后,我们可以显示用户有权访问的租户列表,这使得可以设置租户上下文,然后继续使用应用程序。

更多详细信息可以从这里阅读