有没有办法使用 Spring Boot 为多租户 SaaS 平台实现 SSO?

Irf*_*fan 6 java spring-security multi-tenant single-sign-on angular

我们需要为客户实现 SSO(OKTA 是他的 IDP),并且我们还有其他客户要求 SSO(ADFS 和 One Login)。所有其他客户端身份验证将是数据库身份验证。

因此,基于每个客户端,身份验证机制应该改变。这可能吗?

我的应用程序是多租户 SaaS。它部署在AWS上,负载均衡器将随机切换服务器。

我们使用 Angular 5 和 Spring boot 2.1 来提供服务。

我怎样才能做到这一点?请指导。

Sar*_*nan 0

这是可能的,因为您没有给出识别租户的方式(例如子域等),您将能够在以下逻辑开始时通过名称推断租户。

逻辑如下,

  1. 将传入请求发送到控制器
  2. 识别租户(通过 URL / UI 输入)
  3. 根据识别的租户,重新路由到租户特定页面
  4. 如果用户属于没有SSO(DB身份验证)的租户,您可以重定向到用户名/密码登录页面
  5. 决定此逻辑的控制器将无需授权即可访问,并且需要访问数据库才能了解推断的租户名称的身份验证类型。

由于这将基于每个请求,因此应用程序将是无状态的,您可以按照帖子中提到的方式使用 ELB,不会出现任何问题。