当前位置:  开发笔记 > 编程语言 > 正文

单个登录跨多个域

如何解决《单个登录跨多个域》经验,为你挑选了3个好方法。

我们公司设有多个域,每个域上都有一个网站.此时,每个域都有自己的身份验证,通过cookie完成.

当登录到一个域的某个人需要访问另一个域的任何内容时,用户需要使用位于另一个域的另一个网站上的不同凭据再次登录.

我正在考虑转向单点登录(SSO),这样就可以消除这种麻烦.我很感激有关如何实现这一点的任何想法,因为我在这方面没有任何经验.

谢谢.

编辑: 网站是互联网(外部)和内部网(公司内部使用)网站的混合.



1> grom..:

我在这里实现的SSO解决方案的工作原理如下:

    有一个主域login.mydomain.com,其脚本master_login.php用于管理登录.

    每个客户端域都有脚本client_login.php

    所有域都有一个共享的用户会话数据库.

    当客户端域要求用户登录时,它会重定向到主域(login.mydomain.com/master_login.php).如果用户尚未登录到主服务器,则它请求来自用户的认证(即,显示登录页面).用户通过身份验证后,会在数据库中创建会话.如果用户已经过身份验证,则会在数据库中查找其会话ID.

    主域返回传递会话ID的客户端域(client.mydomain.com/client_login.php).

    客户端域创建一个cookie,用于存储来自主服务器的会话ID.客户端可以通过使用会话ID查询共享数据库来找出登录用户.

笔记:

会话ID是使用RFC 4122中的算法生成的唯一全局标识符

master_login.php将仅重定向到其白名单中的域

主服务器和客户端可以位于不同的顶级域中.例如.client1.abc.com,client2.xyz.com,login.mydomain.com


你如何处理案件whare主域login.mydomain.com下降?那时登录不可能吗?
任何机构都会生成任何代码示例或github repo?
如果他们不共享用户数据库怎么办?每个合作伙伴Web应用程序都有自己的用户群.我们怎么遇到这个?

2> Markc..:

不要重新发明轮子.有许多开源跨域SSO包,如JOSSO,OpenSSO,CAS,Shibboleth等.如果您在整个过程中使用Microsoft技术(IIS,AD),则可以使用Microsoft联合(ADFS).


OpenSSO已经死了,JOSSO和CAS是JAVA解决方案.只是一个FYI
+1你几乎不应该重新发明安全轮.
绝对 - 我已经看到太多人推出他们自己的安全解决方案只是为了发现他们容易受到重播,XSRF或其他攻击

3> jason saldo..:

主机名有多大不同?

这些主机可以共享cookie:

mail.xyz.com

www.xyz.com

logon.xyz.com

但这些不能:

abc.com

xyz.com

www.tre.com

在前一种情况下,您可以敲出基于cookie的解决方案.想想GUID和数据库会话表.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有