【问题标题】:Connection between SP and IDP in multiple SP SSO scenario多SP SSO场景中SP与IDP的连接
【发布时间】:2015-06-16 06:50:35
【问题描述】:

长话短说。客户同时拥有 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 - 为了进行测试,我正在使用 shibboleth IDP 和 oiosaml Java 库用于 SP2。 IDP(第 6 步)如何验证用户是否已登录?是否通过某些 cookie 的存在来检查?是针对供应商的检查吗?

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

【问题讨论】:

    标签: saml saml-2.0


    【解决方案1】:

    据我所知,没有具体说明 IDP 如何跟踪安全上下文。但除了 cookie,我从未见过其他任何东西。

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

    这意味着浏览器必须能够连接到所有节点,但节点不需要相互连接。前提是您使用 POST 绑定而不是工件绑定。

    【讨论】:

    • SP 之间将直接通信,因为 SP1 将具有指向 SP2 资源位置的链接。
    • 我同意@StefanRasmusson 的回答,只要您知道该链接应该是什么样子,SP1 和SP2 不需要相互访问,SP1 可以显示链接。如果 SP1 和 SP2 需要通信来构建这样的链接(例如,SP1 需要调用 SP2 的 API 来检索 URL 的一些特定 ID)。让 SP1 通过隧道使用不同的身份验证协议进行身份验证。 SAML 旨在通过他的浏览器而不是 SP 对您的最终用户进行身份验证。
    • 使用一个通用的 SP(例如 Shib),然后让该 SP 创建一个可以在两个应用程序中使用的令牌不是更容易吗?这就是大多数 SP 的做法……考虑像 Salesforce 这样的公司——他们不会为每个应用程序创建新的身份验证机制……你与一个通用的 SP 端点交谈,SP 会给你一个可以在任何应用程序上使用的令牌他们的应用程序的数量。只是似乎以这种方式扩展将是一个问题。
    • @Łukasz 你指的不是直接沟通。该网站只是告诉浏览器转到一个链接,因此只有浏览器需要能够访问它
    • @Stefan - 谢谢。只是出于好奇,我们的 SP 需要以哪种绑定方式与 IDP 直接连接?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2020-06-01
    • 1970-01-01
    • 2020-08-19
    • 2017-02-06
    • 2019-03-23
    相关资源
    最近更新 更多