gpt4 book ai didi

security - 使用不同身份提供者的两个应用程序的 SSO

转载 作者:行者123 更新时间:2023-12-04 02:14:43 25 4
gpt4 key购买 nike

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

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

用户在应用A注册,注册成功后,登录应用A,调用应用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 )

一旦用户登录到应用程序 A,服务器将对应用程序 B 进行后台登录调用(使用应用程序 B 的预配置默认凭据)。为响应此登录,应用程序 B 将发出一个 session cookie,该 cookie 将在后续 API 调用中传递给应用程序 B。这种方法具有为应用程序 B 使用默认凭据的缺点,但它很简单并且可行。

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

最佳答案

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

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

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

如果您能够在应用程序 B 中创建一个帐户,这样对于应用程序 A 中的每个帐户,您在应用程序 B 中都有一个您登录的类似帐户,这样会更安全。

希望这对您有所帮助!

完全披露:我为 Stormpath 工作。

关于security - 使用不同身份提供者的两个应用程序的 SSO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35047285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com