我正在构建的系统有问题。我已经成功实施了一个由 SP 发起的 SSO 系统。但是,当考虑到该系统具有多个必须能够交互和交换数据的独特且完全隔离的服务提供者时,就会出现问题。当一个 SP (SP1) 需要与另一个 SP (SP2) 通信时,它们需要能够在保持安全的同时无缝转换。因此,我假设他们需要能够断言或共享 SAML 数据。
例如,用户尝试通过 SP1 访问系统并被重定向到 IdP。用户针对 IdP 进行身份验证,然后 IdP 将通过 http post 断言回 SP1。用户现在在 SP1 上执行一系列任务,最终需要数据传输或浏览器重定向到 SP2。SP2 不知道 SP1 已成功验证用户身份并收到来自 IdP 的 SAML 响应。这就是我的问题出现的地方。我需要实现一种机制,让 SP2 能够了解用户在 SP1 上的状态。更一般地说,我需要允许一组服务提供者中的任何服务提供者就用户的状态相互断言。但是,我找不到有关完成此任务的“官方”方式的文档。
我已经想到了该问题的多种解决方案,但我怀疑它们中的任何一个至少是“官方的”。一种是在 IdP 上保留 SAML 断言列表,可以由 guid 引用。然后将链接从 SP1 传递到 SP2,该链接将引用控制器操作和 guid,从而允许 IdP 将数据重新声明到 SP2。这似乎缓慢而复杂。两个将在 SP1 上收到响应后以某种方式保留 SAML 响应,并在用户被重定向时以某种方式将数据传递给 SP2。
我可能想多了,把这个过程复杂化了。我可能需要转向 IdP 发起的基于 SSO 的解决方案。我可能正在查看文档中的某些内容。
如果有人能对这个话题有所了解,将不胜感激。我很乐意提供有关该主题的任何其他信息。