1、OpenSSO
曾经Sun的一款开源产品,从很少的那一点点中文资料上来看,这个能实现我需要的那种SSO模式。从SUN被Oracle收购之后,Oracle便关闭了OpenSSO这个项目,现在在网上下不到OpenSSO的安装文件。而且以前的那些在SUN发布的很多相关的帮助文档,大多数链接都失效了,全都指向了Oracle的同一个页面,找不到文档中对应的安装文件。
2、OpenAM
OpenAM的原型应该就是OpenSSO,据说是在Oracle关闭OpenSSO时,被“解救”下来的。在OpenAM的官网上能找到相关的帮助文档,这种方法使用的LDAP服务器是OpenDS,而既存系统在OAS上使用的是OID(Oracle Internet Directory),客户希望沿用OID这个LDAP服务器,(恨死他们了),从OpenAM的安装过程来看,OpenAM似乎不支持OID,但是,在网上找到一些资料似乎修改一些配置还是可以做到的。
OpenAM 是一个领先的开源认证、授权的产品,可用于替换即将被取消的 OpenSSO。
OpenAM 提供核心的标识服务用来简化实现在一个网络架构中的透明单点登录,包括集中式或者分布式的单点登录。主要的特性有:
完全符合开源AAA产品;
AAA协议:计算机安全领域的协议,AAA指:鉴权,授权,计费(Authentication, Authorization, Accounting)
简单易用、易配置;
纯Java开发;
可轻松配置联合认证系统,并集成到已有项目中。
最新的功能:
支持 XACML 协议
100%支持 OAuth 认证协议
企业监控
3、Kerberos
也提供另外一种方式的 SSO ,即基于 Windows 域的 SSO
Spring Security Kerberos:将Windows Active Directory认证(或其它支持Kerberos的设施)与Spring Security集成来实现单点登录。
Spring Security Kerberos:Spring Security SAML:Spring Security CAS:都是针对单点登录服务器的客户端实现。
4、CAS
CAS是 Yale 大学发起的一个开源项目,据统计,大概每 10 个采用开源构建 Web SSO 的 Java 项目,就有 8 个使用 CAS 。这些统计可能言过其实,但有一点可以肯定的是, CAS 是最简单实效,而且足够安全的 SSO 选择,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS具有以下特点:
开源的企业级单点登录解决方案。
CAS Server 为需要独立部署的 Web 应用。
CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
IBM的一篇文章:构建和实现单点登录解决方案
5、shiro能不能做单点登录?
shiro的单点登录是通过集成cas实现的
6、通过session共享,
需要做的太多,比如
不能实现跨域,需要自己实现(即使各service可以访问同一个session服务器,但是浏览器端跨域后,用户没有凭证TGT证明自己登陆了)
退出登陆需要自己实现,可以参考cas系统的退出
要自己做权限管理
要自己实现sevice控制,把非法的service排除在外
需要自己实现oauth
而上面这些CAS都做好了
7、其他
http://www.blogjava.net/security/archive/2006/10/02/sso_in_action.html
总结:个人推荐CAS系统
请看cas常见问题系列文章 - 持续更新中
--------------------------
微信公众号:IT人成长关注