【问题标题】:SSO for two applications that use different identity providers使用不同身份提供者的两个应用程序的 SSO
【发布时间】:2016-01-29 02:43:12
【问题描述】:

我想在两个网络应用程序之间执行 SSO。这是我的场景:

应用 A 和 B(均提供 RESTFUL API)。 应用 B 使用基于表单的身份验证,我无法对应用 B 进行任何修改。另外,应用 A 和应用 B 维护不同的用户存储进行身份验证。

用户在App A中注册,注册成功后登录App A,调用App B中需要用户认证的API。

目标是确保一旦用户登录应用 A,他们应该能够调用应用 B 的经过身份验证的 API,而无需再次登录应用 B。

我浏览了 PingIdentity、Stormpath 和少数其他供应商提供的基于云的 SSO 解决方案,看起来跨多个应用程序的 SSO 要求所有应用程序都应该信任相同的身份提供者,或者应用程序应该理解 SAML/Open ID。此外,它还需要我更改应用 B 处理身份验证的方式(但我无法对应用 B 进行任何更改。

我已经为我的场景想到了简单的解决方案(这在某种程度上也是一种 SSO 方法http://www.opengroup.org/security/sso/sso_intro.htm

一旦用户登录到 App A,服务器将对 App B 进行后台登录调用(使用 App B 的预配置默认凭据)。为响应此登录,应用 B 将发出一个会话 cookie,该 cookie 将在随后的 API 调用中传递给应用 B。 这种方法在为应用 B 使用默认凭据方面存在一些缺点,但它很简单并且可以工作。

但是,在走这条路之前,我想知道是否可以使用标准 SSO 解决方案以不同的方式处理这种情况?

【问题讨论】:

  • 专家。对此有何指导?

标签: security oauth-2.0 single-sign-on stormpath


【解决方案1】:

传统上,有一些“粘合剂”将 SSO 应用程序绑定在一起。两个应用程序之间需要有内在的信任。这通常通过协议(SAML / Open IDC)或共享机密(用于验证签名)来完成。

在您描述的场景中,您无法控制或访问 App B 的身份验证方式,您将始终需要“在后台”向 App B 进行身份验证,并保留其会话 cookie 以进行后续请求。

但是,这本质上是不安全的。它有效地为应用程序 A 的所有用户创建了一个匿名登录到应用程序 B。就应用程序 B 而言,它始终是同一用户登录。

如果您能够在 App B 中创建一个帐户,这样对于 App A 中的每个帐户,您在 App B 中都有一个您登录的类似帐户,那将更加安全。

希望这会有所帮助!

完全披露:我为 Stormpath 工作。

【讨论】:

  • 非常感谢@afitnert 的帮助。这澄清了我的情况。正如你所说,我也觉得在后台进行身份验证的方法并不安全,但我现在需要采取一些措施。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-04
  • 2018-08-10
  • 2015-06-10
  • 2013-04-19
相关资源
最近更新 更多