如何与多个租户一起使用安全 SAML?

How can I do secure SAML with multiple tenants?

我是在 IDP-initiated 工作流程的上下文中谈论的。

我正在使用 this passport strategy for saml. Under the "Security and signatures" 标题,它建议提供 IDP 的证书。

当我定义策略 AFAIK 时将插入此证书。

在 multi-tenant 应用程序的情况下,在用户尝试登录之前我无法知道要使用哪个证书,而此时使用该证书就太晚了,不是吗?

如果在 SAML 请求进入之前我不知道要使用哪个证书,我该如何验证多个租户的 SAML 请求?

我想我需要这样的东西:

  1. 用户发送信息以识别他们尝试登录的租户
  2. SAML 策略是使用正确的证书创建的。
  3. SAML 进程开始。

或许我只是想错了, none 这对于拥有一个相对安全的登录过程真的是必要的吗?

如果这个问题太宽泛,请留下评论帮助我缩小范围,或者指导我阅读我应该阅读的资源,我将不胜感激。


如果不清楚,我正在存储:

此信息链接到租户,因此一旦我从 IDP 获得配置文件信息,我就可以确定用户应该被定向到哪个租户。我也可以在确定租户后使用此信息来验证事物。

也许我可以使用 public 证书进行一些 "after-the-fact" 验证?

不确定这是否有帮助,因为我不熟悉护照。也就是说,当我设计多租户 SAML 服务提供商 (SP) 到身份提供商 (IdP) 数据流时,我在发出 SAML 请求之前实施了 IdP 发现服务。为了使 IdP Discovery 工作,有一些策略,但似乎总是最有效的策略是将 URL 中的租户名称作为子域,例如tenant.yourcompany.com。然后,当在 IdP 发现服务中处理该 URL 时,它可以正确地格式化发送给 IdP 服务器的 SAML 请求。希望对您有所帮助。

我认为这样做会奏效:

1) 为租户管理员提供他们唯一的租户 ID

2) 让他们将 SSO URL 设置为 "mySite.com/login/[tenantId]"、

3) 从 url 中获取 tenantId 并使用它来选择正确的证书进行身份验证。

这与将中间件添加到我的服务器以调用创建通行证策略的函数一起工作。