编写你自己的单点登录(SSO)服务
来源:百度文库 编辑:神马文学网 时间:2024/04/27 20:17:28
编写你自己的单点登录(SSO)服务 王昱 yuwang881@gmail.com 博客地址http://yuwang881.blog.sohu.com摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中。本文从业务的角度分析了单点登录的需求和应用领域;从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO和桌面SSO的实现、源代码和详细讲解;还从安全和性能的角度对现有的实现技术进行进一步分析,指出相应的风险和需要改进的方面。本文除了从多个方面和角度给出了对单点登录(SSO)的全面分析,还并且讨论了如何将现有的应用和SSO服务结合起来,能够帮助应用架构师和系统分析人员从本质上认识单点登录,从而更好地设计出符合需要的安全架构。关键字:SSO, Java, J2EE, JAAS1 什么是单点登陆单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和IT服务。例如财务系统为财务人员提供财务的管理、计算和报表服务;人事系统为人事部门提供全公司人员的维护服务;各种业务系统为公司内部不同的业务提供不同的服务等等。这些系统的目的都是让计算机来进行复杂繁琐的计算工作,来替代人力的手工劳动,提高工作效率和质量。这些不同的系统往往是在不同的时期建设起来的,运行在不同的平台上;也许是由不同厂商开发,使用了各种不同的技术和标准。如果举例说国内一著名的IT公司(名字隐去),内部共有60多个业务系统,这些系统包括两个不同版本的SAP的ERP系统,12个不同类型和版本的数据库系统,8个不同类型和版本的操作系统,以及使用了3种不同的防火墙技术,还有数十种互相不能兼容的协议和标准,你相信吗?不要怀疑,这种情况其实非常普遍。每一个应用系统在运行了数年以后,都会成为不可替换的企业IT架构的一部分,如下图所示。随着企业的发展,业务系统的数量在不断的增加,老的系统却不能轻易的替换,这会带来很多的开销。其一是管理上的开销,需要维护的系统越来越多。很多系统的数据是相互冗余和重复的,数据的不一致性会给管理工作带来很大的压力。业务和业务之间的相关性也越来越大,例如公司的计费系统和财务系统,财务系统和人事系统之间都不可避免的有着密切的关系。为了降低管理的消耗,最大限度的重用已有投资的系统,很多企业都在进行着企业应用集成(EAI)。企业应用集成可以在不同层面上进行:例如在数据存储层面上的“数据大集中”,在传输层面上的“通用数据交换平台”,在应用层面上的“业务流程整合”,和用户界面上的“通用企业门户”等等。事实上,还用一个层面上的集成变得越来越重要,那就是“身份认证”的整合,也就是“单点登录”。通常来说,每个单独的系统都会有自己的安全体系和身份认证系统。整合以前,进入每个系统都需要进行登录,这样的局面不仅给管理上带来了很大的困难,在安全方面也埋下了重大的隐患。下面是一些著名的调查公司显示的统计数据:
SSOFilter
*.jsp
下面还有几个主要的函数需要说明: private String SSOService(String cookievalue) throws IOException { String authAction = "?action=authcookie&cookiename="; HttpClient httpclient = new HttpClient(); GetMethod httpget = new GetMethod(SSOServiceURL+authAction+cookievalue); try { httpclient.executeMethod(httpget); String result = httpget.getResponseBodyAsString(); return result; } finally { httpget.releaseConnection(); } } private void logoutService(String cookievalue) throws IOException { String authAction = "?action=logout&cookiename="; HttpClient httpclient = new HttpClient(); GetMethod httpget = new GetMethod(SSOServiceURL+authAction+cookievalue); try { httpclient.executeMethod(httpget); httpget.getResponseBodyAsString(); } finally { httpget.releaseConnection(); } } 这两个函数主要是利用apache中的httpclient访问SSOAuth提供的认证服务来完成效验cookie和logout的功能。其他的函数都很简单,有很多都是我的IDE(NetBeans)替我自动生成的。4 当前方案的安全局限性当前这个WEB-SSO的方案是一个比较简单的雏形,主要是用来演示SSO的概念和说明SSO技术的实现方式。有很多方面还需要完善,其中安全性是非常重要的一个方面。我们说过,采用SSO技术的主要目的之一就是加强安全性,降低安全风险。因为采用了SSO,在网络上传递密码的次数减少,风险降低是显然的,但是当前的方案却有其他的安全风险。由于cookie是一个用户登录的唯一凭据,对cookie的保护措施是系统安全的重要环节:
[收藏到我的网摘] javachannel发表于 2006年05月24日 10:48:00
相关文章:
特别推荐:
# IT技术爱好者 发表于2006-05-25 07:40:00 IP: 222.182.66.*写得好,写得太好了,请问我怎么联系你呢,我的EMail:welcomeyinfl@163.com
# dead_lee 发表于2006-05-25 10:59:00 IP: 10.16.26.*要提供跨域的SSO的解决方案有很多其他的方法,在这里就不多说了。Sun的Access Manager就具有跨域的SSO的功能。
能不能提两句。。。。
# rzqi 发表于2006-05-25 12:04:00 IP: 221.6.205.*http://gceclub.sun.com.cn/wangyu/ 打不开啊
# cauherk 发表于2006-05-27 11:45:00 IP: 58.212.20.*简介非常简单自白,没有太多的修饰。作者把更多的精力化在技术和实践上,没有浮夸。
作者提供的链接是可以直接下载的!
# martin(doublebridge) 发表于2006-05-27 17:02:00 IP: 218.94.37.*没想到你会对SSO也这么了解。上一次给你发email的时候你还说不怎么清楚Access Manager呢。哈哈,看来近来学习了不少。
我与SUN的Identity Server结缘已经有将近三年了。其实我感觉从SSO本身来说,各种产品,包括开源的和商业版本思路大体一致,都采用了token这种不太安全的机制。如果说Kerberos比较好,那么其实它本身还欠缺一个与其它业务系统方便集成的框架。它还是一个注重于密钥管理的东东。现在各种SSO产品共同的缺陷是:
1>人员数据的同步机制不够健全,这个SUN公司的解决方案通过采用Access Manager + Identity Manager的方式可以在某种程度上缓解。但是在实际工程实施中还会出现异构系统集成问题。
2>SSO平台提供的API不能够兼容异构的编程环境,无法实现高效的跨平台调用。比如如何解决.net中调用SUN AM API的问题。
以上两个问题其实都是异构系统中的集成难点。与其它的EAI集成有相似的地方,只不过如果认证系统采用WebService方式集成可能会出现效率和安全性的问题。因此我们在集成时采用了类似CORBA的组件平台。
以后如果有时间希望能够和你进一步探讨这方面的技术问题。我的联系方式改变了,你可以发email到sunch_2002@hotmail.com联系我。希望你能看到这个帖子。呵呵,祝好运。
# difficult 发表于2006-05-28 17:48:00 IP: 221.218.149.*怎么没有图了
# Wang Yu 发表于2006-05-29 00:44:00 IP: 221.11.67.*有关跨domain的SSO,请参见我的博客
http://yuwang881.blog.sohu.com/3632369.html
# Wang Yu 发表于2006-05-29 11:48:00 IP: 221.11.67.*Martin,你好
你换公司了吗?最近怎么样?
请保持联系
yuwang881@gmail.com
# zqdl 发表于2006-05-30 17:35:00 IP: 159.226.4.*写得好长啊,内容很好,很丰富。可以看出作者为了介绍清楚SSO的技术查阅了大量资源。非常感谢~~,继续加油啊!
# trevol 发表于2006-05-31 21:59:00 IP: 219.142.136.*谢谢!
# 过客 发表于2006-06-04 14:31:00 IP: 60.2.84.*收益不小!!
# 过客 发表于2006-06-04 14:31:00 IP: 60.2.84.*收益不小!!
# 夜色老熊 发表于2006-07-01 13:03:00 IP: 124.116.56.*挺不错的介绍性文档,但还有几点是否还可以再阐述清楚一下
1。ticket应该只能用一次,但文章里说的好像可以用很多次
2。文中没有提到https、ssl、certificate等技术有点遗憾,SSO系统中应该考虑安全的传输通道
3。SSO系统结构和Kerberos结构很相似,但Kerberos并不是用来解决SSO问题的
# 我要飞 发表于2006-07-02 10:05:00 IP: 220.179.62.*晕,我把代码下下来,怎么调试不通呢?
# 我要飞 发表于2006-07-02 10:13:00 IP: 220.179.62.*我遇到的问题是:输入http://localhost:8080/SSOWebDemo1/test.jsp
能自动跳转到登陆界面,输入wangyu wangyu后,tomcat显示login success,goto back url:http://localhost:8080/SSOWebDemo1/test.jsp
但IE仍然是跳转到了登陆界面,等待重新输入,而不是跳到test.jsp欢迎界面.
若用户名密码错,则能跳到faile.html
请问这是怎么回事啊?我都弄好几天了.是cookie没有记下来么?我是能找到cookie的啊.
我的QQ:281097825, EMAIL: lele-16@126.com
# 我要飞 发表于2006-07-02 10:21:00 IP: 220.179.62.*有人调试通过了么?
# 我要飞 发表于2006-07-04 09:58:00 IP: 220.179.62.*晕,原来是 127.0.0.1与localhost有区别,用127.0.0.1一切正常,用localhost的话,IE就不能跳转到欢迎界面,为什么会这样呢?搞不懂
# guest 发表于2006-07-11 14:25:00 IP: 222.66.32.*这个例子我调试过了;用IE和FireFox是不能跑得,好像是Cookie支持的有问题;但是Opera9.x的浏览器是可以的。
# James Wang 发表于2006-07-11 15:19:00 IP: 222.66.32.*哦,想明白了,如果用localhost,或者自己的本机器名来做这个实验是不行的;IE,FireFox在Cookie.setDomain("localhost")或Cookie.setDomain("mymachine")的时候不能产生实际的Cookie的;而用127.0.0.1就可以,因为127.0.0.1这种IP地址格式与实际的域名是构成是一样的,”以点分隔“
# piper 发表于2006-07-17 11:39:00 IP: 135.252.6.*我已经换成127.0.0.1了,可是问题还是一样,和用localhost一样,只有出错页面,没有正确的跳转业面,我用的是IE
# FENG 发表于2006-07-18 09:46:00 IP: 220.179.62.*我现在正在调试OPENSSO,请问网上的OPENSSO能跨域吗?高手指教
另外,我建了个群:9285593,单点登陆SSO研究。欢迎有志同道合者加入。请注明:SSO
# FENG 发表于2006-07-20 09:43:00 IP: 220.179.62.*我在调试本问中的源代码的时候,还遇到一个问题:成功登陆SSOWebDemo2/test.jsp后,产生了一个COOKIE文件。现在我把已经这个文件删除掉,在同一个窗口中再试图登陆SSOWebDemo1/test.jsp。我想因为没有COOKIE,应该跳转都login.jsp,但结果是我照样能看到SSOWebDemo1/test.jsp的欢迎界面,这是为什么呢?
难道我没有删除干净?我是将C:\Documents and Settings\Administrator\Cookies下的administrator@127.0.0*.txt删除掉的,其他地方还有记录吗?
# xyh 发表于2006-07-31 16:50:00 IP: 220.168.125.*链接无法下载啊
# 花生 发表于2006-09-25 20:33:00 IP: 222.209.119.*写的比较详细,但是并不全面,细细品读很有收获的
- 用户每天平均 16 分钟花在身份验证任务上 - 资料来源: IDS
- 频繁的 IT 用户平均有 21 个密码 - 资料来源: NTA Monitor Password Survey
- 49% 的人写下了其密码,而 67% 的人很少改变它们
- 每 79 秒出现一起身份被窃事件 - 资料来源:National Small Business Travel Assoc
- 全球欺骗损失每年约 12B - 资料来源:Comm Fraud Control Assoc
- 到 2007 年,身份管理市场将成倍增长至 $4.5B - 资料来源:IDS
- 提高 IT 效率:对于每 1000 个受管用户,每用户可节省$70K
- 帮助台呼叫减少至少1/3,对于 10K 员工的公司,每年可以节省每用户 $75,或者合计 $648K
- 生产力提高:每个新员工可节省 $1K,每个老员工可节省 $350 ?资料来源:Giga
- ROI 回报:7.5 到 13 个月 ?资料来源:Gartner
- 所有应用系统共享一个身份认证系统。
统一的认证系统是SSO的前提之一。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户。另外,认证系统还应该对ticket进行效验,判断其有效性。 - 所有应用系统能够识别和提取ticket信息
要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。
- 单一的用户信息数据库并不是必须的,有许多系统不能将所有的用户信息都集中存储,应该允许用户信息放置在不同的存储中,如下图所示。事实上,只要统一认证系统,统一ticket的产生和效验,无论用户信息存储在什么地方,都能实现单点登录。
- 统一的认证系统并不是说只有单个的认证服务器,如下图所示,整个系统可以存在两个以上的认证服务器,这些服务器甚至可以是不同的产品。认证服务器之间要通过标准的通讯协议,互相交换认证信息,就能完成更高级别的单点登录。如下图,当用户在访问应用系统1时,由第一个认证服务器进行认证后,得到由此服务器产生的ticket。当他访问应用系统4的时候,认证服务器2能够识别此ticket是由第一个服务器产生的,通过认证服务器之间标准的通讯协议(例如SAML)来交换认证信息,仍然能够完成SSO的功能。
- 统一的身份认证服务。
- 修改Web应用,使得每个应用都通过这个统一的认证服务来进行身份效验。
- Web-SSO的样例是由三个标准Web应用组成,压缩成三个zip文件,从http://gceclub.sun.com.cn/wangyu/web-sso/中下载。其中SSOAuth(http://gceclub.sun.com.cn/wangyu/web-sso/SSOAuth.zip)是身份认证服务;SSOWebDemo1(http://gceclub.sun.com.cn/wangyu/web-sso/SSOWebDemo1.zip)和SSOWebDemo2(http://gceclub.sun.com.cn/wangyu/web-sso/SSOWebDemo2.zip)是两个用来演示单点登录的Web应用。这三个Web应用之所以没有打成war包,是因为它们不能直接部署,根据读者的部署环境需要作出小小的修改。样例部署和运行的环境有一定的要求,需要符合Servlet2.3以上标准的J2EE容器才能运行(例如Tomcat5,Sun Application Server 8, Jboss 4等)。另外,身份认证服务需要JDK1.5的运行环境。之所以要用JDK1.5是因为笔者使用了一个线程安全的高性能的Java集合类“ConcurrentMap”,只有在JDK1.5中才有。
- 这三个Web应用完全可以单独部署,它们可以分别部署在不同的机器,不同的操作系统和不同的J2EE的产品上,它们完全是标准的和平台无关的应用。但是有一个限制,那两台部署应用(demo1、demo2)的机器的域名需要相同,这在后面的章节中会解释到cookie和domain的关系以及如何制作跨域的WEB-SSO
- 解压缩SSOAuth.zip文件,在/WEB-INF/下的web.xml中请修改“domainname”的属性以反映实际的应用部署情况,domainname需要设置为两个单点登录的应用(demo1和demo2)所属的域名。这个domainname和当前SSOAuth服务部署的机器的域名没有关系。我缺省设置的是“.sun.com”。如果你部署demo1和demo2的机器没有域名,请输入IP地址或主机名(如localhost),但是如果使用IP地址或主机名也就意味着demo1和demo2需要部署到一台机器上了。设置完后,根据你所选择的J2EE容器,可能需要将SSOAuth这个目录压缩打包成war文件。用“jar -cvf SSOAuth.war SSOAuth/”就可以完成这个功能。
- 解压缩SSOWebDemo1和SSOWebDemo2文件,分别在它们/WEB-INF/下找到web.xml文件,请修改其中的几个初始化参数
SSOServiceURL http://wangyu.prc.sun.com:8080/SSOAuth/SSOAuth SSOLoginPage http://wangyu.prc.sun.com:8080/SSOAuth/login.jsp
将其中的SSOServiceURL和SSOLoginPage修改成部署SSOAuth应用的机器名、端口号以及根路径(缺省是SSOAuth)以反映实际的部署情况。设置完后,根据你所选择的J2EE容器,可能需要将SSOWebDemo1和SSOWebDemo2这两个目录压缩打包成两个war文件。用“jar -cvf SSOWebDemo1.war SSOWebDemo1/”就可以完成这个功能。 - 请输入第一个web应用的测试URL(test.jsp),例如http://wangyu.prc.sun.com:8080/ SSOWebDemo1/test.jsp,如果是第一次访问,便会自动跳转到登录界面,如下图
- 使用系统自带的三个帐号之一登录(例如,用户名:wangyu,密码:wangyu),便能成功的看到test.jsp的内容:显示当前用户名和欢迎信息。
- 请接着在同一个浏览器中输入第二个web应用的测试URL(test.jsp),例如http://wangyu.prc.sun.com:8080/ SSOWebDemo2/test.jsp。你会发现,不需要再次登录就能看到test.jsp的内容,同样是显示当前用户名和欢迎信息,而且欢迎信息中明确的显示当前的应用名称(demo2)。
- 如果用户还没有登录过,是第一次登录本系统,会被跳转到login.jsp页面(在后面会解释如何跳转)。用户在提供了用户名和密码以后,就会用handlerFromLogin()这个方法来验证。
- 如果用户已经登录过本系统,再访问别的应用的时候,是不需要再次登录的。因为浏览器会将第一次登录时产生的cookie和请求一起发送。效验cookie的有效性是SSOAuth的主要功能之一。
- SSOAuth还能直接效验非login.jsp页面过来的用户名和密码的效验请求。这个功能是用于非web应用的SSO,这在后面的桌面SSO中会用到。
- SSOAuth还提供logout服务。
- Web应用中每一个需要安全保护的URL在访问以前,都需要进行安全检查,如果发现没有登录(没有发现认证之后所带的cookie),就重新定向到SSOAuth中的login.jsp进行登录。
- 登录成功后,系统会自动给你的浏览器设置cookie,证明你已经登录过了。
- 当你再访问这个应用的需要保护的URL的时候,系统还是要进行安全检查的,但是这次系统能够发现相应的cookie。
- 有了这个cookie,还不能证明你就一定有权限访问。因为有可能你已经logout,或者cookie已经过期了,或者身份认证服务重起过,这些情况下,你的cookie都可能无效。应用系统拿到这个cookie,还需要调用身份认证的服务,来判断cookie时候真的有效,以及当前的cookie对应的用户是谁。
- 如果cookie效验成功,就允许用户访问当前请求的资源。
- 在每个被访问的资源中(JSP或Servlet)中都加入身份认证的服务,来获得cookie,并且判断当前用户是否登录过。不过这个笨方法没有人会用:-)。
- 可以通过一个controller,将所有的功能都写到一个servlet中,然后在URL映射的时候,映射到所有需要保护的URL集合中(例如*.jsp,/security/*等)。这个方法可以使用,不过,它的缺点是不能重用。在每个应用中都要部署一个相同的servlet。
- Filter是比较好的方法。符合Servlet2.3以上的J2EE容器就具有部署filter的功能。(Filter的使用可以参考JavaWolrd的文章http://www.javaworld.com/javaworld/jw-06-2001/jw-0622-filters.html)Filter是一个具有很好的模块化,可重用的编程API,用在SSO正合适不过。本样例就是使用一个filter来完成以上的功能。
- cookie的长度和复杂度
在本方案中,cookie是有一个固定的字符串(我的姓名)加上当前的时间戳。这样的cookie很容易被伪造和猜测。怀有恶意的用户如果猜测到合法的cookie就可以被当作已经登录的用户,任意访问权限范围内的资源 - cookie的效验和保护
在本方案中,虽然密码只要传输一次就够了,可cookie在网络中是经常传来传去。一些网络探测工具(如sniff, snoop,tcpdump等)可以很容易捕获到cookie的数值。在本方案中,并没有考虑cookie在传输时候的保护。另外对cookie的效验也过于简单,并不去检查发送cookie的来源究竟是不是cookie最初的拥有者,也就是说无法区分正常的用户和仿造cookie的用户。 - 当其中一个应用的安全性不好,其他所有的应用都会受到安全威胁
因为有SSO,所以当某个处于 SSO的应用被黒客攻破,那么很容易攻破其他处于同一个SSO保护的应用。
- 当前所提供的登录认证模式只有一种:用户名和密码,而且为了简单,将用户名和密码放在内存当中。事实上,用户身份信息的来源应该是多种多样的,可以是来自数据库中,LDAP中,甚至于来自操作系统自身的用户列表。还有很多其他的认证模式都是商务应用不可缺少的,因此SSO的解决方案应该包括各种认证的模式,包括数字证书,Radius, SafeWord ,MemberShip,SecurID等多种方式。最为灵活的方式应该允许可插入的JAAS框架来扩展身份认证的接口
- 我们编写的Filter只能用于J2EE的应用,而对于大量非Java的Web应用,却无法提供SSO服务。
- 在将Filter应用到Web应用的时候,需要对容器上的每一个应用都要做相应的修改,重新部署。而更加流行的做法是Agent机制:为每一个应用服务器安装一个agent,就可以将SSO功能应用到这个应用服务器中的所有应用。
- 当前的方案不能支持分别位于不同domain的Web应用进行SSO。这是因为浏览器在访问Web服务器的时候,仅仅会带上和当前web服务器具有相同domain名称的那些cookie。要提供跨域的SSO的解决方案有很多其他的方法,在这里就不多说了。Sun的Access Manager就具有跨域的SSO的功能。
- 另外,Filter的性能问题也是需要重视的方面。因为Filter会截获每一个符合URL映射规则的请求,获得cookie,验证其有效性。这一系列任务是比较消耗资源的,特别是验证cookie有效性是一个远程的http的调用,来访问SSOAuth的认证服务,有一定的延时。因此在性能上需要做进一步的提高。例如在本样例中,如果将URL映射从“.jsp”改成“/*”,也就是说filter对所有的请求都起作用,整个应用会变得非常慢。这是因为,页面当中包含了各种静态元素如gif图片,css样式文件,和其他html静态页面,这些页面的访问都要通过filter去验证。而事实上,这些静态元素没有什么安全上的需求,应该在filter中进行判断,不去效验这些请求,性能会好很多。另外,如果在filter中加上一定的cache,而不需要每一个cookie效验请求都去远端的身份认证服务中执行,性能也能大幅度提高。
- 另外系统还需要很多其他的服务,如在内存中定时删除无用的cookie映射等等,都是一个严肃的解决方案需要考虑的问题。
- 运行此桌面SSO需要三个前提条件:
a) WEB-SSO的身份认证应用应该正在运行,因为我们在桌面SSO当中需要用到统一的认证服务
b) 当前桌面需要运行Mozilla或Netscape浏览器,因为我们将ticket保存到mozilla的cookie文件中
c) 必须在JDK1.4以上运行。(WEB-SSO需要JDK1.5以上) - 解开desktopsso.zip文件,里面有两个目录bin和lib。
- bin目录下有一些脚本文件和配置文件,其中config.properties包含了三个需要配置的参数:
a) SSOServiceURL要指向WebSSO部署的身份认证的URL
b) SSOLoginPage要指向WebSSO部署的身份认证的登录页面URL
c) cookiefilepath要指向当前用户的mozilla所存放cookie的文件 - 在bin目录下还有一个login.conf是用来配置JAAS登录模块,本样例提供了两个,读者可以任意选择其中一个(也可以都选),再重新运行程序,查看登录认证的变化
- 在bin下的运行脚本可能需要作相应的修改
a) 如果是在unix下,各个jar文件需要用“:”来隔开,而不是“;”
b) java 运行程序需要放置在当前运行的路径下,否则需要加上java的路径全名。
- OpenSSO 的网站: https://opensso.dev.java.net
- 在java应用中使用掩码的密码提示:http://java.sun.com/developer/technicalArticles/Security/pwordmask/
- Kerberos的资源网站:http://web.mit.edu/kerberos/
- Sun的Java&Kerberos教程:http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss/tutorials/index.html
- Apache社区提供的HttpClient工具包网址:http://jakarta.apache.org/commons/index.html)
- Filter的使用教程文章:http://www.javaworld.com/javaworld/jw-06-2001/jw-0622-filters.html
- 我的博客http://yuwang881.blog.sohu.com/3184816.html
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=752437
[收藏到我的网摘] javachannel发表于 2006年05月24日 10:48:00
相关文章:
- 编写你自己的单点登录(SSO)服务 2006-06-03 ccsdba
- 应用整合中SSO的技术实现(ZZ) 2006-03-19 xeonol
- 单点登录系统 2005-10-15 litp
- sso与IIS 2005-03-25 alice2005
- Jetspeed2.0中单点登录的实现 2006-05-21 peterwanghao
特别推荐:
- 阿里巴巴急聘Java高级程序员
阿里巴巴是一家由中国人创办的国际化的互联网公司, 高薪邀请英才 :) ai - 用友软件急聘.NET开发工程师
用友软件一直秉持“人才为重”的理念 我们盛情邀您加入…… ai - 下围棋什么时候电脑能战胜人脑
中国围棋国手 大学教授告诉你 ai - 无限立通聘JAVA高级工程师
无线数据通讯领域的领导者 我们盛情邀您加入…… ai - 飞塔信息招聘高级测试工程师
美国Fortinet(飞塔)公司是新一代网络实时 它提供一套网络与信息安全整体解决方案,代表了网络信 ai
# IT技术爱好者 发表于2006-05-25 07:40:00 IP: 222.182.66.*写得好,写得太好了,请问我怎么联系你呢,我的EMail:welcomeyinfl@163.com
# dead_lee 发表于2006-05-25 10:59:00 IP: 10.16.26.*要提供跨域的SSO的解决方案有很多其他的方法,在这里就不多说了。Sun的Access Manager就具有跨域的SSO的功能。
能不能提两句。。。。
# rzqi 发表于2006-05-25 12:04:00 IP: 221.6.205.*http://gceclub.sun.com.cn/wangyu/ 打不开啊
# cauherk 发表于2006-05-27 11:45:00 IP: 58.212.20.*简介非常简单自白,没有太多的修饰。作者把更多的精力化在技术和实践上,没有浮夸。
作者提供的链接是可以直接下载的!
# martin(doublebridge) 发表于2006-05-27 17:02:00 IP: 218.94.37.*没想到你会对SSO也这么了解。上一次给你发email的时候你还说不怎么清楚Access Manager呢。哈哈,看来近来学习了不少。
我与SUN的Identity Server结缘已经有将近三年了。其实我感觉从SSO本身来说,各种产品,包括开源的和商业版本思路大体一致,都采用了token这种不太安全的机制。如果说Kerberos比较好,那么其实它本身还欠缺一个与其它业务系统方便集成的框架。它还是一个注重于密钥管理的东东。现在各种SSO产品共同的缺陷是:
1>人员数据的同步机制不够健全,这个SUN公司的解决方案通过采用Access Manager + Identity Manager的方式可以在某种程度上缓解。但是在实际工程实施中还会出现异构系统集成问题。
2>SSO平台提供的API不能够兼容异构的编程环境,无法实现高效的跨平台调用。比如如何解决.net中调用SUN AM API的问题。
以上两个问题其实都是异构系统中的集成难点。与其它的EAI集成有相似的地方,只不过如果认证系统采用WebService方式集成可能会出现效率和安全性的问题。因此我们在集成时采用了类似CORBA的组件平台。
以后如果有时间希望能够和你进一步探讨这方面的技术问题。我的联系方式改变了,你可以发email到sunch_2002@hotmail.com联系我。希望你能看到这个帖子。呵呵,祝好运。
# difficult 发表于2006-05-28 17:48:00 IP: 221.218.149.*怎么没有图了
# Wang Yu 发表于2006-05-29 00:44:00 IP: 221.11.67.*有关跨domain的SSO,请参见我的博客
http://yuwang881.blog.sohu.com/3632369.html
# Wang Yu 发表于2006-05-29 11:48:00 IP: 221.11.67.*Martin,你好
你换公司了吗?最近怎么样?
请保持联系
yuwang881@gmail.com
# zqdl 发表于2006-05-30 17:35:00 IP: 159.226.4.*写得好长啊,内容很好,很丰富。可以看出作者为了介绍清楚SSO的技术查阅了大量资源。非常感谢~~,继续加油啊!
# trevol 发表于2006-05-31 21:59:00 IP: 219.142.136.*谢谢!
# 过客 发表于2006-06-04 14:31:00 IP: 60.2.84.*收益不小!!
# 过客 发表于2006-06-04 14:31:00 IP: 60.2.84.*收益不小!!
# 夜色老熊 发表于2006-07-01 13:03:00 IP: 124.116.56.*挺不错的介绍性文档,但还有几点是否还可以再阐述清楚一下
1。ticket应该只能用一次,但文章里说的好像可以用很多次
2。文中没有提到https、ssl、certificate等技术有点遗憾,SSO系统中应该考虑安全的传输通道
3。SSO系统结构和Kerberos结构很相似,但Kerberos并不是用来解决SSO问题的
# 我要飞 发表于2006-07-02 10:05:00 IP: 220.179.62.*晕,我把代码下下来,怎么调试不通呢?
# 我要飞 发表于2006-07-02 10:13:00 IP: 220.179.62.*我遇到的问题是:输入http://localhost:8080/SSOWebDemo1/test.jsp
能自动跳转到登陆界面,输入wangyu wangyu后,tomcat显示login success,goto back url:http://localhost:8080/SSOWebDemo1/test.jsp
但IE仍然是跳转到了登陆界面,等待重新输入,而不是跳到test.jsp欢迎界面.
若用户名密码错,则能跳到faile.html
请问这是怎么回事啊?我都弄好几天了.是cookie没有记下来么?我是能找到cookie的啊.
我的QQ:281097825, EMAIL: lele-16@126.com
# 我要飞 发表于2006-07-02 10:21:00 IP: 220.179.62.*有人调试通过了么?
# 我要飞 发表于2006-07-04 09:58:00 IP: 220.179.62.*晕,原来是 127.0.0.1与localhost有区别,用127.0.0.1一切正常,用localhost的话,IE就不能跳转到欢迎界面,为什么会这样呢?搞不懂
# guest 发表于2006-07-11 14:25:00 IP: 222.66.32.*这个例子我调试过了;用IE和FireFox是不能跑得,好像是Cookie支持的有问题;但是Opera9.x的浏览器是可以的。
# James Wang 发表于2006-07-11 15:19:00 IP: 222.66.32.*哦,想明白了,如果用localhost,或者自己的本机器名来做这个实验是不行的;IE,FireFox在Cookie.setDomain("localhost")或Cookie.setDomain("mymachine")的时候不能产生实际的Cookie的;而用127.0.0.1就可以,因为127.0.0.1这种IP地址格式与实际的域名是构成是一样的,”以点分隔“
# piper 发表于2006-07-17 11:39:00 IP: 135.252.6.*我已经换成127.0.0.1了,可是问题还是一样,和用localhost一样,只有出错页面,没有正确的跳转业面,我用的是IE
# FENG 发表于2006-07-18 09:46:00 IP: 220.179.62.*我现在正在调试OPENSSO,请问网上的OPENSSO能跨域吗?高手指教
另外,我建了个群:9285593,单点登陆SSO研究。欢迎有志同道合者加入。请注明:SSO
# FENG 发表于2006-07-20 09:43:00 IP: 220.179.62.*我在调试本问中的源代码的时候,还遇到一个问题:成功登陆SSOWebDemo2/test.jsp后,产生了一个COOKIE文件。现在我把已经这个文件删除掉,在同一个窗口中再试图登陆SSOWebDemo1/test.jsp。我想因为没有COOKIE,应该跳转都login.jsp,但结果是我照样能看到SSOWebDemo1/test.jsp的欢迎界面,这是为什么呢?
难道我没有删除干净?我是将C:\Documents and Settings\Administrator\Cookies下的administrator@127.0.0*.txt删除掉的,其他地方还有记录吗?
# xyh 发表于2006-07-31 16:50:00 IP: 220.168.125.*链接无法下载啊
# 花生 发表于2006-09-25 20:33:00 IP: 222.209.119.*写的比较详细,但是并不全面,细细品读很有收获的
编写你自己的单点登录(SSO)服务
编写你自己的单点登录(SSO)服务
编写你自己的单点登录(SSO)服务 1
编写你自己的单点登录(SSO)服务
编写你自己的单点登录(SSO)服务 1
编写你自己的单点登录(SSO)服务
编写你自己的单点登录(SSO)服务 - javachannel的专栏
编写你自己的单点登录(SSO)服务 - javachannel的专栏 - CSDNBlog
中文java技术网::编写你自己的单点登录(SSO)服务
编写自己的单点登录(SSO)服务
编写自己的单点登录(SSO)服务--DingL.com
编写你自己的单点登录
单点登录-sso
SSO 单点登录
单点登录SSO技术资料收集
单点登录SSO技术资料收集
单点登录(SSO)的核心--kerberos身份认证协议技术参考(二)
单点登录SSO技术资料收集(转载) - ctangqh的专栏 - CSDNBlog
单点登录(SSO)的核心--kerberos身份认证协议技术参考(一) - chnking - 博客园
单点登录(SSO)的核心--kerberos身份认证协议技术参考(二) - chnking - 博客园
WebSphere环境下的SSO(Single sign-on:单点登录、全网漫游)实现之...
SSO单点登录解决方案[转载] - 走在架构师的大道上 Jack.Wang's home ...
单点登录系统(SSO)详细设计说明书(上篇) - 海纳百川,有容乃大 - 博客园
单点登录的简单实现 (相关文章)