多SP单点登录场景下SP与IDP的连接

Connection between SP and IDP in multiple SP SSO scenario

长话短说。客户同时拥有 SP(简称 SP1)和 IDP。我们正在集成我们的应用程序(称为 SP2)以提供受保护的资源。在 IDP(典型的 SSO 服务)验证主体身份后,资源将可用。下面的场景是这样的:

1. Pricipal enters SP1.
2. No security context has been created for the user yet, so he logs to IDP.
3. After a sucessful login, the user tries to access a resource on SP2 from SP1.
4. Request comes to SP2, which needs to verify principal identity.
5. SP2 tries to log in to IDP (HTTP Redirect Binding).
6. IDP verifies there is a security context and does not offer a login form but strikes back with assertion.
7. Resource is served.

问题 1 - 为了进行测试,我使用了用于 SP2 的 shibboleth IDP 和 oiosaml java 库。 IDP(第 6 步)如何验证用户是否已登录?是否通过某些 cookie 的存在进行检查?是针对供应商的检查吗?

问题 2 - SP2 IP 不是外部 IP,因此我们需要在 SP1 和 SP2 之间以及 SP1 和 SP2 之间创建隧道。是否有任何标准场景可以在不影响 IDP 的情况下验证主体权限(第 5 步)?

据我所知,没有指定 IDP 如何跟踪安全上下文。但是除了饼干我什么都没见过。

我不确定您是否需要隧道。 SP1 和 SP2 之间不会有任何直接通信,只有 SP 和 IDP 之间。如果您使用 POST 绑定来传递 SAML 断言,那里也不会直接通信。在这种情况下,所有通信都将通过浏览器进行。

这意味着浏览器必须能够连接到所有节点,但节点之间不需要连接。如果您使用 POST 绑定而不是 Artifact 绑定。​​