Jetspeed2.0中单点登录的实现

原文地址:http://helloklzs.iteye.com/blog/1169569

单点登录(Single Sign On)是门户产品的一大特点,可以为企业用户提供统一的信息资源认证访问平台,通过实施单点登录功能,使各种用户只需一次登录就可以根据相关的规则去访问不同的应用系统,提高IT系统的易用性、安全性、稳定性;在此基础上进一步实现企业用户高速协同办公和企业知识管理。

SSO实现原理:
       SSO通常都是应用于WEB系统中。基于Web的身份验证的实质无外乎就是有一个表单,表单里面让用户输入用户名称和密码,然后提交给验证的页面,通过身份验证后,通过Session来储存用户的一些信息,然后每次访问页面时,从session里面读这些信息,如果存在,则进入登录后的界面,否则,就认为没有登录。客户端要支持Cookie来存储sessionid,与服务器上创建的session来对应。
       SSO都要有一个单一的登录点,由此登录点将创建的会话token传递给应用系统。SSO需要建立一个统一的认证,权限信息库。但现实中,有的系统无法使用外部的认证,授权信息库,所以就需要在应用系统和Portal Server之间进行认证,同时进行授权信息的数据同步。根据认证,授权实现的位置可以分为两种实现方式:
       第一类是通过Agent的方式,即在后端为每个Web应用系统都安装一个Agent,由Agent来接管该系统的身份验证和访问控制,Portal中会存放自己的用户信息,以及这些用户与其他系统的用户对应信息。这些Agent能够通过配置,轻松的接管了后面的系统的身份验证和访问控制。
       第二类是通过Proxy的方式,即具有一个Proxy Server,由它来接管对于后端系统的访问,提交请求和读取数据,然后再返回给Portal。同时Portal可以存放用户信息以及用户的对应关系。 Proxy Server会通过存储的用户对应关系和用户名和密码,自动完成后端系统的登录,然后就象一个浏览器一样,提取数据,返回数据给后端系统。这样的话后台系统不用做任何修改,身份认证和访问控制仍然由各个系统自己管理。

Jetspeed2.0中SSO的实现:
       Jetspeed2.0中的SSO支持基本的认证方式,支持基于cookies和Form形式的认证。凭证信息的存储作为一个组件实现,使用Jetspeed2.0的安全模式存储凭证信息(即Portal中的用户凭证和其他系统的用户凭证是存放在一起,使用同样方式管理)。SSO功能包含三个方面:
       1、SSO管理
       管理SSO的凭证信息和建立Portal用户的对应关系。用admin登录,在“Jetspeed管理portlets”下有“SSO管理”,在这里有两个Portlet:j2-admin::SSOBrowserPortlet和j2- admin::SSODetailsPortlet。左侧的是站点信息管理,包括站点名称,站点URL,站点域,以及用户名和密码的参数名称。管理的是要访问站点的一些基本信息。右侧是管理此站点的用户与Portal用户的对应关系。远处的站点用户信息包括用户帐号和凭证,可以同Portal中的单个用户对应也可以同用户组对应。同一个站点下可以有多个对应关系。

       2、SSO Provider服务
       是Jetspeed服务框架的一部分,处理SSO站点和凭证信息的存储,并且提供了通过url来获得数据的接口(注,通过站点的链接/URL来获得内容,笔者一开始以为是通过站点名称)。站点信息都存放在SSOSite对象中,凭证信息都存放在 SSOContext对象中。

       3、SSO Proxy Portlet
       这个Portlet为门户与被认证的站点提供了一个代理。它的主要目的是在它访问在配置参数中定义的目标地址之前认证所有SSO用户帐号的凭证。因为用户事先并不知道可能选择哪个目标地址。这样登录提示将不会出现,因为一个SSO入口已经存在并且用户已经被许可。SSO Proxy保留客户端的cache以便认证只发生一次。

SSO应用:
       在Jetspeed2.0中自带了一个简单的例子程序SSO IFrame Portlet。Portlet根据目标地址获得站点的凭证信息,组成URL字符串,使用IFrame形式提交访问目标站点。注意:IFrame由程序代码自动生成。高度不能为百分比,否则IE6无法显示。
       SSOWebContentPortle是获取网页信息的Portlet,也使用了SSO。注意,需要将jetspeed/WEB-INF/lib/xerces-2.3.0.jar拷贝到demo/WEB-INF/lib目录下。

总结:
       Jetspeed2.0中提供了站点信息和用户凭证的管理,建立了门户用户与其他应用系统用户的对应关系,并提供了获得这些数据的接口。使用Proxy Portlet可实现预登录。通过这些方法完成了简单的单点登录功能。但在实际应用中根据不同的系统需要做些二次开发工作。因为各系统的用户认证都是在各系统的认证授权模块完成的,Portal只是存储了用户凭证的对应关系,这样就存在了系统间凭证信息同步的问题。对此需要在实际应用中注意。

你可能感兴趣的:(Jetspeed)