如何让 SAML 重定向到正确的 IdP?

How can I get SAML to redirect to the right IdP?

我们希望为所有用户提供对 SP 之类的发布者的无缝访问。 SP 是独立的,并为许多不同的公司提供服务,即我们每个人都有独立的 IdP 解决方案。

我们希望它像没有身份验证一样工作,即用户在 Internet 上找到 link 并关注它。如果网站为我们的用户提供特殊服务(我们付费),我们希望他们使用我们自己的 IdP(但仅针对我们自己的用户)来验证他们。

我们当前的 SAML 设置要求 SP 支持 IP 地址识别 and/or 使用特定域名,即用户访问特定域名或来自我们的 IP 范围,以便 SP 知道哪个 IdP重定向到但如果我们的用户来自任何其他 IP 地址并且不访问特定 URL 系统丢失。

这个怎么解决的?

我认为每次用户通过身份验证(来自 SP 识别的我们的网络)时 SP 提供的 cookie 可以解决这个问题,但这是标准吗?这并不是真正的解决方案,因为它要求我们的用户至少从我们的网络访问过一次!

这与其说是一个 SAML 问题,不如说是一个不特定于协议的身份提供者发现问题。发布者应该如何知道/决定应通过 SAML 或任何其他协议将特定用户重定向到您的 IdP?从一般意义上讲,这不是一个容易处理的问题。当涉及到这些特殊用户/服务时,发布商和您需要就两个实体(您和这些发布商)之间的合同达成一致。

不涉及域或 IP 范围的 IdP 发现的一种可能实现是基于用户身份的 IdP 动态查找。用户单击 link,导航到发布者站点并尝试使用(例如)他的身份 myname@mycompany.com 登录。然后,发布者可以在其特殊用户/服务/IdP 的身份存储中查找 mycompany.com,并确定不应允许该用户使用本地(发布者管理的)凭据登录。相反,应该通过 SAML 身份验证请求将用户发送给某个第 3 方 IdP。发布者可以在用户登录时但在用户有机会输入他们的发布者管理的凭据之前执行此操作,无论是通过您最喜欢的 AJAX 技术还是某种其他形式的 UI 满足。

发布者可以使用持久性 cookie,以便下次此用户访问此发布者时,他们会知道此用户 "belongs" 到第 3 方 IdP 并相应地重定向。