IBMWebSpherePortal开发者教程--WPS6.0项目实践郑文平著-1-单点登录:企业门户与应用系统集成本章导读:如果您去问10个资深的企业门户售前咨询顾问或者项目实施者这样一个问题?什么是企业门户?企业门户能做什么?能解决我们那些问题?单点登陆!恐怕其中会有10个人在列出的清单中都会有这个条目。因为企业门户技术从诞生以来,最吸引人的地方就是单点登录。试想一下:您有十几套应用系统需要登录,计算一下,打开十个浏览器,从脑袋里搜索出这十几套系统的用户名和密码,再输入到这十几对小框框中(甚至多于十几对),然后再点一下“登陆”按钮,等着初始化主页面,再点击几个菜单进入到您要处理业务或者查看数据的页面,开始您的工作。请计算一下:这个过程需要多长时间?至少半个小时。对于一寸光阴一寸金的您来说,这意味着您每年将要耗费150个小时左右的时间在无谓的登录过程上。这就是为什么很多抱怨时间不够用的企业或者分管信息技术建设的老总们听到我们可以使用企业门户技术2分钟完成这个过程,每天为他们节约下28分钟的时候,他们正了正脑袋,对这个问题表现出了极大的兴趣。那么到底什么是单点登陆?单点登陆能带给我们什么?怎么实现?本章将解决这个问题。在这一章里,我们首先讨论什么是单点登录,然后分别介绍集成IBM的产品(LotusNotes)和非IBM产品(指运行在WebLogic,Tomcat等应用服务器上的、基于B/S架构的企业级业务系统)两类企业及应用,我们的重点在于后者。也就是说,主要解决以下几个问题:1.什么是单点登录(SingleSignOn),为什么要SSO。2.如何配置Portal与OA的SSO。3.Portal与普通企业及应用集成的SSO。这个问题是本文的核心,我们将分以下几部分来介绍:集成企业级应用程序业务系统的原理;如何开发Portlet,用于集成企业级应用程序;Portlet代理类的开发方法。IBMWebSpherePortal开发者教程--WPS6.0项目实践郑文平著-2-目录单点登录:企业门户与应用系统集成...........................................................................................11.1什么是单点登录?.....................................................................................................31.1.1概述:SingleSignOn(SSO)...........................................................................31.1.2SSO的实现方式..............................................................................................41.1.2.1统一LDAP验证..............................................................................51.1.2.2基于Portal系统LDAP的凭证保险库法.......................................61.1.2.3与OA系统LDAP的凭证保险库法:..............................................71.2LTPA:Portal与IBM产品的SSO.........................................................................71.2.1LTPA对于SSO的工作机制...........................................................................71.2.2SSO的集成效果:..........................................................................................81.2.3怎样实现OA与Portal的SSO?..................................................................91.3Portal系统与普通应用程序的SSO......................................................................211.3.1概述.................................................................................................................211.3.2凭证保险库实现SSO原理............................................................................221.3.3开发Portlet实现SSO的方法.......................................................................23IBMWebSpherePortal开发者教程--WPS6.0项目实践郑文平著-3-1.1什么是单点登录?1.1.1概述:SingleSignOn(SSO)严格地说,单点登录指的是允许用户登录到一个应用,这个应用带有经过认证的到其他应用的访问途径,登录到这个应用之后,用户无需再遭遇任何其他的认证。用更实际的话来说,它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。我们的目标是,SSO提供登录到WebSpherePortal的能力,并允许使用那些用户凭证访问Domino环境、Domino、Sametime、QuickPlace以及其他基于Domino的工具;允许用户访问自己权限以内的所有企业及应用,即:运行在普通应用程序服务器上的各种业务系统。例如,运行在WebLogic或者Tomcat上的jsp应用程序,运行在IIS上的asp,aspx系统,以及php系统。如果在WebSpherePortal和业务系统之间没有SSO关系的话,那么用户每次访问某个包含来自于基于业务系统的应用程序或者服务的信息的portlet时,都需要登录到业务系统环境中。此外,有些WebSpherePortalAPI和服务,比如人员在线感知,没有提供登录工具。即使这些服务不提供独特的登录工具,为了运行它们仍然需要通过SSO进行认证。我们以石化行业某企业集团的综合数据平台为例,如果实现了单点登录,那么,一旦用户登录进入Portal系统,该用户就可以在不用再次登录的情况下,访问她所拥有权限的、包括OA和普通企业即应用程序在内的所有业务系统,如下图所示:IBMWebSpherePortal开发者教程--WPS6.0项目实践郑文平著-4-图1—1Portal与企业级业务系统实现了SSO1.1.2SSO的实现方式我们还是以石化类某企业集团的综合数据集成平台为例,改企业现在存在一下四套业务系统,包括LotusNotes开发的OA系统,一套基于WebLogic的jsp系统,两套基于IIS的asp系统,我们就以集成这四套系统为例,简单介绍SSO的实现:该企业集团的现在这四套系统是:IBMWebSpherePortal开发者教程--WPS6.0项目实践郑文平著-5-图2-1该企业集团的现有的应用业务系统我们将采用如下几种方式实现SSO:1.1.2.1统一LDAP验证IBMWebSpherePortal开发者教程--WPS6.0项目实践郑文平著-6-图2-1SSO的第一种方式:统一LDAP验证我们将四套业务系统的所有用户信息一起放到LDAP服务器内,由ldap统一对四套系统的用户进行验证。这样做比较有利于用户及权限的管理,但是也存在弊端。这四套系统是有不同的四家IT公司开发,用户信息放在不同平台的不同数据库中,而且这四套系统除OA外,各有不同的用户组群,放在一起反而不利于管理。所以,此法SSO虽然可行,却不适合该Portal系统。我们不采用这种方法。1.1.2.2基于Portal系统LDAP的凭证保险库法图2-2SSO的第二种方法:基于Portal系统LDAP的凭证保险库法IBMWebSpherePortal开发者教程--WPS6.0项目实践郑文平著-7-我们采用Portal系统独立存在的LDAP,由这个LDAP验证Portal系统用户的合法性,一旦验证通过,用户就登录进Portal系统。然后用户在给定权限的各个业务系统Portlet中存储在各个业务系统中的用户信息,Portal系统会统一管理这些信息,然后自动到各个业务系统的用户信息库中校验,一旦通过校验,该portlet就能显示业务系统的授权信息。通常我们是在portlet中放入一个Iframe,用户在Portal系统中通过portlet中的这个Iframe来访问具体业务系统中的授权信息。1.1.2.3与OA系统LDAP的凭证保险库法:基本上等同于第二种方法,不过更简单。OA系统是企业内部没个人都使用的业务系统,而且它已经有一套成熟的LDAP,我们不必再为Portal创建LDAP服务器,我们可以直接使用OA系统的,所以有点麻烦的是,在使用Portal系统的时候,OA必须是开着的,击是你不使用OA,因为认证的时候是到OA的LDAP服务其中验证的。其他方面则与第二种方法完全相同。1.2LTPA:Portal与IBM产品的SSO1.2.1LTPA对于SSO的工作机制WebSpherePortal和LotusDomino之间的单点登录是通过一种称为轻量级第三方认证(LTPA)的机制来实现的。WebSphere应用服务器(还包括WebSpherePortal和其他任何运行在WebSphere环境中的应用程序)和Domino都使用LTPA。当LTPA机制用于由多个服务器组成的环境中时,它是通过使用DomainCookie而启用的。这种经过加密的会话cookie被放置在用户浏览器中,并包含了一些信息,WebSphere或者DominoApplication服务器可以加密这些信息,并使用这些信息来说明用户已经通过该cookie所覆盖的DNS(DomainNamingService,域名服务)域中的认证。LTPAcookie包含以下信息:IBMWebSpherePortal开发者教程--WPS6.0项目实践郑文平著-8-Cookie名称:总是设置为LtpaToken。域:设置为Internet域,该域由参与单点登录的所有服务器所共享(例如:mycompany.com)。Cookie到期:设置为当浏览器的寿命终止时删除该cookie。安全:设置为开状态,以强制使用安全套接字层(SSL)。有一个LTPA配置有一个设置参数,使它创建只通过SSL发送的cookie。Cookie值:这被设置为LTPA标记,接下来会对其进行描述。LTPA标记是一个加密的字符串,它包含以下信息:用户数据:一般被设置为用户ID,但也可以是任何用于惟一标识用户的用户信息。过期时间:与Cookie过期不同,这个字段用于强加一个时间限制,时间限制从登录进来的那一刻算起,而不受浏览器活动或者不活动所影响。这个时间限制是一个可配置的LTPA设置,缺省情况下为30分钟。1.2.2SSO的集成效果:我们可以把整个OA系统作为一个整体,即一个Portlet集成进Portal系统,也可以根据OA内不同的文件数据库(.nsf)俺功能拆分为各个不同的功能单元,每个功能单元作为一个单独的portlet集成进Portal系统。例如,IB