天乙通行证是一个单点登录系统(Single sign on),用户登录一次通行证,即可以直接使用社区、Blog等产品,无需再次注册或登录,保证几个产品用户的统一,但天乙通行证由于本身没有产品化,所以现在没有开源,如果使用天乙社区需要做用户整合,只要实现通行证的类似系统就可以。
SSO的实现技术有多种,也有一些开源产品,而天乙通行证使用的是比较简单,但非常有效的方案,即同域名下的Cookie方式,实现用户的单点登录。
以天乙通行证为例,天乙社区(bbs.laoer.com)、天乙Blog(blog.laoer.com)都运行在laoer.com域名下,用户在www.laoer.com上注册后登录,通行证就会在用户的客户端写入两个Cookie,一个是用户名(Cookie名:PASS_USERNAME),一个是加密的用户名(Cookie名:PASS_USERNAME_DES),加密的方式采用3DES,采用3DES加密是因为3DES可逆的加密算法,即对密文可以还原,Cookie的Domain为.laoer.com,这样在laoer.com下的所有域名都可以访问到这个Cookie。
接下来我们说一下社区的认证过程,社区采用Struts2的MVC结构,在Action之前,都会执行一个拦截器(UserSessionInterceptor),这个拦截器首先会读取通行证的两个Cookie,如果两个Cookie都存在,则对加密的用户名进行解密,采用的密钥与通行证加密的密钥一致,然后解密后的用户名与另一个明文的用户名比对,如果两个值一致,说明用户已经在通行证登录,则建立在社区的Session(如果Session已经存在,则认为用户在社区也已经登录),如果通行证的Cookie不存在或是用户比对错误,则认为用户没有登录或已经签退,社区会做游客登录,详细处理流程请阅读UserSessionInterceptor.java源码。
如果用户在现有系统上整合社区,只要顶层域写入两个Cookie,在社区后台中有设置通行证的项目,两个系统采用的密钥一致就行了,同时3DES算法可以用多种语言实现,比如.NET、Ruby等等,所以可以在编程语言异构的网络系统中无缝使用,当然用户也可以采用自己的加密解密算法。
这个方案要注意的问题:
1、只能使用在一个主域名下,如果要跨域名则不能实现。
2、需要用户支持Cookie。
3、密钥安全性,由于所有应用都使用统一的密钥,需要在加强管理,定期更换,或是采用RSA方法对密钥加密,减少密钥泄漏的可能性。
4、对于非WEB系统,比如客户端程序,需要扩展其他方法实现。
分享到:
相关推荐
天乙社区6.0(含源码天乙社区6.0天乙社区6.0(含源码)(含源码))
天乙社区 v6.0(含源码)
天乙社区是开源的一个论坛工程,开发者拿出来和大家一起共享,代码不错啊!
BBS-CS(天乙社区)v5.2.2源码版BBS-CS(天乙社区)v5.2.2源码版BBS-CS(天乙社区)v5.2.2源码版BBS-CS(天乙社区)v5.2.2源码版
天乙社区系统(Struts+Spring+Hibernate)源代码
一套Web式网络社区软件,天乙社区采用JSP+JavaBean构架,后台可以使用MYSQL、Oracle、SQL Server等多种数据库,适用于Linux/UNIX、Windows等多种操作系统,具有界面简洁、功能强大、操作方便等特点
还不错的一个论坛资源。找了好长时间才找到的。用的是struts1+spring+hibernate做的。
这个是开源论坛社区的作品,我把论坛的轮廓录制了下来,供初学者参考,解压就可以了
struts spring hibernate 天乙论坛6.0源码
安装说明 MYSQL安装 将安装包解压缩,用bbscs6.sql建表。 将bbscs6目录COPY直Tomcat/webapps/下,即Tomcat/webapps/bbscs6 修改Tomcat/webapps/bbscs6/WEB-INF/classes/init.properties文件 主要修改 ...
BBS-CS 天乙社区,是由龚天乙开发的一套Web式网络社区软件,天乙社区采用JSP+JavaBean构架,后台可以使用MYSQL、Oracle、SQL Server等多种数据库,适用于Linux/UNIX、Windows等多种操作系统,天乙社区系统具有界面...
本源码是在天乙社区论坛基础上的二次开发,实战型项目的源码,适合初级SSH开发的进阶学习。由于源码比较大且一次上传大小有限制,所以分作三个压缩文件。 bbscs7.rar源代码包 lib1.rar(天乙社区论坛源码,适合初级...
BBS-CS 天乙社区 v6.0.4(含源码)BBS-CS 天乙社区 v6.0.4(含源码)
天乙代码src_531.rar 天乙代码src_531.rar 天乙代码src_531.rar 天乙代码src_531.rar
天乙社区6.0是一套基于JAVA技术的网络虚拟社区,采用了Hibernate+Spring+Struts的轻量级J2EE框架,较5.x的内核有又了很大的提高,主要特点有: 1、跨平台:天乙社区完全具有java语言跨平台的特性,可以方便的...
一套基于JAVA技术的网络虚拟社区,采用了Hibernate+Spring+Struts的轻量级J2EE框架,较5.x的内核有又了很大的提高,主要特点有: 1、跨平台:天乙社区完全具有java语言跨平台的特性,可以方便的运行在windows、...
一套Web式网络社区软件,天乙社区采用JSP+JavaBean构架,后台可以使用MYSQL、Oracle、SQL Server等多种数据库,适用于Linux/UNIX、Windows等多种操作系统,天乙社区系统具有界面简洁、功能强大、操作方便等特点。...
移动开发期末考核相关文件吴天乙.zip
天乙智能图形编辑浏览器是矢量图形软件,可用来制作,显示,管理一定格式的矢量图形文件。不仅支持图形画面的无级缩放和无限制移动,以及图形闪烁,动画显示,图形形态变化等功能,并且支持图形内部及个图形对象间的...
之前上传的天乙社区系统的lib,由于大小原因,与源码分开上传了,不过不需要分.