2

我正在使用多个 SP 实现单点登录。以下是我的基本理解:

1)浏览器(用户)向服务提供商(SP)请求资源。
2) SP 重定向(带有 SAML 请求)到身份提供者 (IdP)。
3) 由于是首次登录,用户向 (IdP) 提供他/她的有效凭据。
4) IdP 然后将浏览器(使用包含 SAML 令牌的 SAML 响应)重定向到 SP 页面。

现在假设我有服务提供者 A 和服务提供者 B。用户已经完成了关于服务提供者 A 的步骤。从服务提供者 A(在我的场景中为 salesforce.com),我编写了一个实例化标注的服务器端方法到服务提供者 B 上的端点。在这种情况下是否可以重用 SAML 断言?即服务提供商 B 会信任后端方法吗?

4

2 回答 2

2

您必须自定义服务提供者 B 以便它接受、理解和解释Assertion服务提供者 A 获得的信息。它肯定不会开箱即用。

SAML Assertion包含在服务提供者 A 中的SAML Response包含将其与原始消息相关联并定义消息接收者的数据片段SAML Request(例如使用元素SubjectConfirmationDataAudience)。服务提供者 B 需要忽略这些字段中的值,因为它实际上不是Assertion.

如何在由身份提供者声明用户身份的两台机器之间代理信任的问题可以通过多种标准方法来解决。一种是使用Session Token Service(基于WS-Trust),它定义了如何向 3rd 方服务请求和发布令牌。另一种是使用OAuth 2.0。当然,您也可以使用带有密码、HMAC 的自定义方案简单地将服务提供者 A 验证到服务提供者 B...

于 2015-01-28T07:12:58.457 回答
1

简短的回答 - 如果服务提供商 B 被实施为标准 SAML 2.0 SP,则否。

SAML 2.0 断言是“有针对性的”和签名的。他们有指定的受众和收件人 URL。您不能在不破坏签名的情况下更改它们。SP A 收到的断言包含作为受众的 SP A 的名称和作为收件人 URL 的 SP A 的 ACS 端点。SP B 不会接受这样的断言。

是什么阻止您以标准方式调用 SP B 并让它启动自己的 SAML 2.0 流程?另一种选择是为 SP B 执行 IDP 发起的 SSO 流。但并非所有 IDP 实现都支持它。

于 2015-01-29T21:21:11.407 回答