0

假设我有以下站点:ClientSiteA.com、ClientSiteB.com、ClientSiteC.com、MainServer.com

我正在向客户站点分发软件。任何人都可以安装该软件,因此网站不能被认为是受信任的。MainServer.com 将包含用户信息。

用户将与客户端站点上的软件进行交互。用户将能够单击将弹出一个弹出窗口的任何客户端站点上的登录链接。弹出窗口可以驻留在 MainServer.com 上。当用户登录任何客户端时,他们将登录所有客户端站点以及 MainServer.com。请记住,MainServer.com 包含所有用户信息。

我已经阅读了大量有关 SAML 和 OAuth2 的内容。有人能告诉我什么是可能的吗?如果可能,我应该使用哪些工具/工作流程?如果这是不可能的,有人可以告诉我我可以完成的与此类似的事情吗?

仅供参考 - 我正在尝试完成类似 Disqus 所做的事情。如果您在任何站点上登录 Disqus,您将登录到所有站点。

4

1 回答 1

0

您可以使用 SAML 完成此操作,尽管它会涉及浏览器重定向而不是弹出窗口。

第一次使用会重定向到 MainServer.com 的受保护站点 (ClientA)。用户登录,MainServer 给他们一个会话,并使用 SAML 身份验证语句将他们重定向回服务提供商,然后让他们进入。

当用户随后访问 ClientB.com 时,它还会重定向到 MainServer.com 进行身份验证。因为用户已经在 MainServer 上登录,所以它可以通过新的身份验证语句无形地将他们直接反弹回 ClientB.com。用户几乎没有注意到。

弹出窗口方法的问题是用户必须将站点 A 的凭据提供给站点 B。如果站点 B 不由站点 A 拥有和控制,这是一个很大的安全漏洞。用户应该只将其凭据提供给对它们进行身份验证以防止它们被入侵的站点。SAML 和其他联合/分布式身份验证机制的设计考虑了这一点。我不想将我的电子邮件帐户的密钥提供给 Internet 上的随机站点,但是通过这种方法,我可以使用我的 gmail 帐户登录到 stackoverflow。

于 2013-10-13T09:55:13.903 回答