关于单点登陆的几个问题
1 可以实现单点登陆的几种方法
(1)基于domain的方案
这种方案是我公司目前使用的一种方案,原理:应用A在a.domain.com,B在b.domain.com,如果设cookie的时候,设domain为domain.com,那在A、B上都可以访问到这个cookie了。(cookie的domain、path、port、version、secure相同)。
该方案特点:
1、不能够跨域
2、在网络中传送用户名和密码
3、只支持J2EE应用
(2)基于gateway的方案
实际部署的时候,对所有应用的请求,都要通过一个gateway转发一下,比如用一个L4的交换机顶在前面。
(3)基于tooken传递的方案
主要是以耶鲁大学的CAS项目为基础。
注意:你自己的应用看不到用户的密码。由CAS执行授权,只有CAS能看到用户的密码。这样增加发安全性,因为用户名和密码不会通过网络在应用间传播。
下面是使用CAS整合的单点登录用例
用例一:
一台认证服务器(假定为AUTH),有两个应用A、B,分别部署在不同的服务器上。
1) 用户访问A,A应用无法找到用户的身份信息,使用redirect方法将用户引导至http://Auth/login?service=http://A/path。
2) AUTH 显示登录界面,用户输入登录信息,认证通过。
3) AUTH产生一个cookie(这个cookie只有AUTH上才能读到),使用redirect方法将用户引导回http://A/path?token=xxxxx(在有的解决方案上,这个token是通过一定编码算法的Account信息)
4) A读取token=xxxx的信息,获取用户身份。
5) 用户访问B。B未找到用户的身份信息,redirect至http://AUTH/login?service=http://B/path
6) AUTH读cookie获取用户身份,然后redirect回http://B/path?token=xxxx
7) B读取token=xxxx信息,获得用户身份信息
用例二:
用户访问一个Web应用的过程。
具体的参看 http://www.9ta8.com/YaleCASServer.mht
(4)USBKey登录
这个方案是北京点聚信息技术有限公司提供的,我也向他们的技术咨询了相关的问题。他们的实现方式基本上是这样的:每个使用该系统的用户都有一个USBKey证书,在登陆系统的时候把这个证书插在计算机上。每一个网站都要通过这个证书去认证。
这样每个登录用户只需插上USBKey即可进入任意受信任系统,当然访问USBKey首先需要密码校验。
2 个人认为单点登陆实际上就两种方案
首先确认要使用单点登陆,必须有一个核心,那就是不管用户走到那个平台,他必须要带着他的通行证,单点登陆最关键的问题是用户怎么取得、保存、使用这个通行证的问题。 用户要取得他的通行证其实不外乎以下两种方案:
第一种:所有的业务平台集成在一个Portal上,去每一个平台的时候都要带着他的“通行证”,这就是所谓的“Tooken传递方案”;
第二种:使用硬件卡,就是上面所说的“USBKey登陆”;
3 单点登陆的几个案例
(1)微软一篇关于单点登陆的文章,他的实现是使用第一种方案。
原文:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/singlesignon.asp
(2)点聚公司的产品,可以看看他们的介绍
http://www.dianju.com.cn/sso.htm
(3)SharePoint Portal Server 2003 中的单一登录
http://www.microsoft.com/china/technet/prodtechnol/sppt/reskit/c2661881x.mspx
(4)《WebCast SharePoint Portal Server 2003 Single Sign On 管理及开发》已提供下载
http://www.msotec.net/Forums/ShowThread.aspx?PostID=415
(5)北京大学信息平台下的统一用户管理和身份认证
http://www.9ta8.com/download.htm
(6)统一身份认证在校园信息化中的应用
http://www.9ta8.com/download.htm
4 我想达到的目的
在不使用硬件卡、Passport和Cookie的情况下我想达到的目的:当用户打开浏览器进入站点A后,登陆,浏览A站点的内容;浏览完毕后用户想进入B站点,然后就在浏览器的地址栏中输入了B站点的地址,这时进入B站点后也不用重新登陆;同样,当用户关闭了浏览器后又想进入C站点,但同样不需要登陆。这个问题考虑了很长时间了,敬请大家指点迷津。