我怎样才能保护与多个租户的SAML?

我正在谈论IDP发起的工作stream程。

我正在使用saml的这个 passport策略。 在“ 安全和签名 ”标题下,它build议提供IDP的证书。

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

在多租户应用程序的情况下,我将无法知道使用哪个证书,直到用户尝试login,并且在那时使用证书将会迟到,是不是?

如果在SAML请求进来之前我无法知道使用哪个证书,那么如何与多个租户validationSAML请求呢?

我想我需要这样的东西:

  1. 用户发送标识他们尝试login的租户的信息
  2. SAML策略是使用正确的证书创build的。
  3. SAML过程开始。

或者,也许我只是在想它错了,没有一个是真正需要有一个相对安全的login过程?

如果这个问题太广泛,如果你留下意见来帮助我缩小范围,或者指导我阅读资源,我将非常感激。


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

  • SSOurl
  • 发行人url
  • 公共证书

这个信息与租户相关联,所以一旦我从IDP获得了个人资料信息,我就可以确定用户应该被引导到哪个租户。 在确定承租人确认事物之后,我也可以使用这些信息。

也许我可以使用公共证书做一些“事后”validation?

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

我认为它会这样做的工作:

1)向租户pipe理员提供其唯一的租户ID

2)让他们将SSO URL设置为“mySite.com/login/[tenantId]”,

3)从URL中获取tenantId并使用它来select正确的证书进行身份validation。

这与将中间件添加到我的服务器以调用创build护照策略的函数一起工作。