我们公司设置了多个域,每个域都托管一个网站。此时,每个域都有自己的身份验证,通过 cookie 完成。
当登录到一个域的人需要访问另一个域的任何内容时,用户需要在位于另一个域的另一个网站上使用不同的凭据再次登录。
我正在考虑转向单点登录 (SSO),这样就可以消除这种麻烦。我将不胜感激有关如何实现这一目标的任何想法,因为我在这方面没有任何经验。
谢谢。
编辑: 这些网站是 Internet(外部)和 Intranet(公司内部使用)网站的混合。
我们公司设置了多个域,每个域都托管一个网站。此时,每个域都有自己的身份验证,通过 cookie 完成。
当登录到一个域的人需要访问另一个域的任何内容时,用户需要在位于另一个域的另一个网站上使用不同的凭据再次登录。
我正在考虑转向单点登录 (SSO),这样就可以消除这种麻烦。我将不胜感激有关如何实现这一目标的任何想法,因为我在这方面没有任何经验。
谢谢。
编辑: 这些网站是 Internet(外部)和 Intranet(公司内部使用)网站的混合。
我在这里实现的 SSO 解决方案的工作原理如下:
笔记:
不要重新发明轮子。有许多开源跨域 SSO 包,例如 JOSSO、OpenSSO、CAS、Shibboleth 等。如果您在整个(IIS、AD)中使用 Microsoft 技术,则可以改用 microsoft federation (ADFS)。
主机名有何不同?
这些主机可以共享 cookie:
但这些不能:
在前一种情况下,您可以使用基于 cookie 的解决方案。想想 GUID 和数据库会话表。
如果您使用 Active Directory,您可以让每个应用程序都使用 AD 进行身份验证,这样就可以无缝登录。
否则,如果应用程序可以在幕后相互通信,您可以使用 sessionids 并让一个应用程序处理 id 生成服务所有其他应用程序。