`
- 浏览:
6774 次
- 来自:
北京
-
原文地址: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只是存储了用户凭证的对应关系,这样就存在了系统间凭证信息同步的问题。对此需要在实际应用中注意。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
以一个实例形式讲解基于jetspeed2.0的portlet二次开发。
标题“Jetspeed2.0中的PSML介绍”向我们揭示了文档的主题,即PSML(Portal Structure Markup Language)在Apache Jetspeed 2.0中的应用。Apache Jetspeed是一个开源的企业信息门户解决方案,它提供了一个框架和一...
JetSpeed2.0作为一款强大的企业级门户平台,通过采用Spring Framework和PORTAL BRIDGE机制,实现了组件的灵活管理和应用程序的广泛集成。它的安全机制、PORTAL BRIDGE和对各种技术规范的支持,都使得JetSpeed2.0成为...
jetspeed-api-2.0的lib包
maven-jetspeed2-plugin-2.0.jar
本压缩包里含有了开发一个jsr168 portlet所需要的软件 本想包含jetspeed2.0的安装程序的,可是最多智能上传10M <br>从环境配置讲到开发步骤。 并表明了很多注意的地方 本包适合初学portlet的人使用
**JETSPEED2.0 概述** Jetspeed2 是一个符合 JSR-168 和 JSR-286 规范的portlet容器,允许开发者将多个不同的Web应用程序(如Struts、WebWork、JSP、Perl、PHP等)集成到一个统一的门户界面中。其核心特性包括强大的...
#### JetSpeed2.0概述 JetSpeed2.0(简称J2)是Apache基金会推出的开源企业门户框架。它在2005年12月发布了最终的Release版本,用户可以从官方网站下载到源代码以及捆绑Tomcat的压缩包。相较于前一代产品JetSpeed1.x...
5. **集成能力**:支持与其他企业级应用(如SAP、Oracle等)集成,通过portlet 实现单点登录和数据交换。 6. **API 和开发工具**:提供了丰富的API 和开发工具,帮助开发者快速构建portlet 应用。 **Jetspeed 2** ...
Jetspeed是Apache组织开发的一个采用Java和XML的开放源代码的企业信息门户的实现。门户可以让终端用户可以很方 便的访问网络资源(应用、数据库等)。用户可以通过Web浏览器、WAP手机、寻呼机以及其它一些智能设备来...
通过与LDAP的集成,Jetspeed 实现了安全的身份管理和权限控制。理解其源码、工具的使用以及LDIF文件的作用,将有助于开发者更好地构建和维护企业级的门户应用。在实际工作中,深入学习和应用这些知识点,可以提升...
此外,还会涵盖portlet开发,如MVCportlet的实现,以及如何利用Jetspeed的API和服务进行集成。开发者可以通过这份文档深入理解Jetspeed的工作原理,并进行定制化的开发。 综上所述,这些中文文档为学习和使用...
- **JSP Portlet**:使用JSP作为portlet的主要实现方式,通过预定义的taglib简化常见任务。 - **RSS/OCS Portlet**:支持RSS (RDF Site Summary) 和 OCS (Open Content Syndication) 格式的内容聚合,使得portlet...
Jetspeed2是Apache软件基金会下的一个项目,它遵循JSR-168(portlet规范1.0)和JSR-286(portlet规范2.0),提供了一个标准的portlet运行环境。Jetspeed2的核心功能包括portlet管理、个性化、内容聚合、权限控制等...
1. Create New Sessions upon Login:默认情况下,当用户通过Jetspeed认证登录时,不会创建新的session,而是将guest用户的session转移到验证过的用户上。如果希望在登录时创建新session,可以将该选项设置为true。...
- **Portal Server**:作为整个门户的核心,Portal Server负责提供个性化设置、单点登录功能,并从不同来源集成信息,形成统一的展示平台。它能够根据用户的权限与偏好,动态调整页面内容,提供高度个性化的用户体验...
接下来,我们将深入探讨Jetspeed 2的相关知识点。 首先,Jetspeed 2基于Apache Software Foundation,并且是JSR-168和JSR-286标准的实现,这两个标准定义了portlet容器和portlet API,使得portlet可以在不同的门户...