IBM Portal 开发系列讲座:
IBM Portal与单点登录、集成企业级应用
作者: 郑 文 平 (2005.08)
内容简介:
本文首先讨论了什么是单点登录,然后分别介绍集成IBM的产品(Lotus Notes)和非IBM产品(指运行在WebLogic,Tomcat等服务器上的业务系统)两类企业及应用,我们的重点在于后者。也就是说,主要解决以下几个问题:
1.什么是单点登录(Single SignOn),为什么要SSO。
2.Portal 与 OA 的SSO。
3.Portal 与普通企业及应用集成的SSO。这个问题是本文的核心,我们将分以下几部分来介绍:
集成企业级应用程序业务系统的原理
第一部分 什么是单点登录?
一、概述:Single Sign On (SSO)
严格地说,单点登录指的是允许用户登录到一个应用,这个应用带有经过认证的到其他应用的访问途径,登录到这个应用之后,用户无需再遭遇任何其他的认证。用更实际的话来说,它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。 我们的目标是,SSO 提供登录到 WebSphere Portal 的能力,并允许使用那些用户凭证访问 Domino 环境、Domino、Sametime、QuickPlace 以及其他基于 Domino 的工具;允许用户访问自己权限以内的所有企业及应用,即:运行在普通应用程序服务器上的各种业务系统。例如,运行在WebLogic或者Tomcat上的jsp应用程序,运行在IIS上的asp,aspx系统,以及php系统。如果在 WebSphere Portal 和 业务系统之间没有 SSO 关系的话,那么用户每次访问某个包含来自于基于业务系统的应用程序或者服务的信息的 portlet 时,都需要登录到业务系统环境中。此外,有些 WebSphere Portal API和服务,比如 人员在线感知 ,没有提供登录工具。即使这些服务不提供独特的登录工具,为了运行它们仍然需要通过 SSO 进行认证。我们以齐鲁石化综合数据平台为例,如果实现了单点登录,那么,一旦用户登录进入Portal系统,该用户就可以在不用再次登录的情况下,访问她所拥有权限的、包括OA和普通企业即应用程序在内的所有业务系统,如下图所示:
图1—1 Portal与企业级业务系统实现了SSO
二、SSO的实现
我们还是以齐鲁石化综合数据集成平台为例,改企业现在存在一下四套业务系统,包括Lotus Notes 开发的OA系统,一套基于WebLogic的jsp系统,两套基于IIS的asp系统,我们就以集成这四套系统为例,简单介绍SSO的实现:
齐鲁石化现在这四套系统是:
图2-1 齐鲁石化现有的应用业务系统
我们将采用如下几种方式实现SSO:
1、 统一LDAP验证集成:
图2-1 SSO的第一种方式:统一LDAP验证
我们将四套业务系统的所有用户信息一起放到LDAP服务器内,由ldap统一对四套系统的用户进行验证。这样做比较有利于用户及权限的管理,但是也存在弊端。这四套系统是有不同的四家IT公司开发,用户信息放在不同平台的不同数据库中,而且这四套系统除OA外,各有不同的用户组群,放在一起反而不利于管理。所以,此法SSO虽然可行,却不适合该Portal系统。我们不采用这种方法。
2、 基于Portal系统LDAP的凭证保险库法
图2-2 SSO的第二种方法:基于Portal系统LDAP的凭证保险库法
我们采用Portal系统独立存在的LDAP,由这个LDAP验证Portal系统用户的合法性,一旦验证通过,用户就登录进Portal系统。然后用户在给定权限的各个业务系统Portlet中存储在各个业务系统中的用户信息,Portal系统会统一管理这些信息,然后自动到各个业务系统的用户信息库中校验,一旦通过校验,该portlet就能显示业务系统的授权信息。通常我们是在portlet中放入一个Iframe,用户在Portal系统中通过portlet中的这个Iframe来访问具体业务系统中的授权信息。
3、 基于OA系统LDAP的凭证保险库法:
基本上等同于第二种方法,不过更简单。OA系统是企业内部没个人都使用的业务系统,而且它已经有一套成熟的LDAP,我们不必再为Portal创建LDAP服务器,我们可以直接使用OA系统的,所以有点麻烦的是,在使用Portal系统的时候,OA必须是开着的,击是你不使用OA,因为认证的时候是到OA的LDAP服务其中验证的。其他方面则与第二种方法完全相同。
第二部分、Portal 与 OA 的SSO
一、SSO是如何工作的?
WebSphere Portal 和 Lotus Domino 之间的单点登录是通过一种称为轻量级第三方认证(LTPA)的机制来实现的。WebSphere 应用服务器(还包括 WebSphere Portal 和其他任何运行在 WebSphere 环境中的应用程序)和 Domino 都使用LTPA。当 LTPA 机制用于由多个服务器组成的环境中时,它是通过使用 Domain Cookie 而启用的。这种经过加密的会话 cookie 被放置在用户浏览器中,并包含了一些信息,WebSphere 或者 Domino Application 服务器可以加密这些信息,并使用这些信息来说明用户已经通过该 cookie 所覆盖的DNS(Domain Naming Service,域名服务)域中的认证。
LTPA cookie 包含以下信息:
· Cookie名称:总是设置为 LtpaToken。
· 域:设置为 Internet 域,该域由参与单点登录的所有服务器所共享(例如:mycompany.com)。
· Cookie 到期:设置为当浏览器的寿命终止时删除该 cookie。
· 安全:设置为开状态,以强制使用安全套接字层(SSL)。有一个 LTPA 配置有一个设置参数,使它创建只通过 SSL 发送的 cookie。
· Cookie值:这被设置为 LTPA 标记,接下来会对其进行描述。
LTPA标记是一个加密的字符串,它包含以下信息:
· 用户数据:一般被设置为用户 ID,但也可以是任何用于惟一标识用户的用户信息。
· 过期时间:与 Cookie 过期不同,这个字段用于强加一个时间限制,时间限制从登录进来的那一刻算起,而不受浏览器活动或者不活动所影响。这个时间限制是一个可配置的 LTPA 设置,缺省情况下为30分钟。
二、SSO 的集成效果:
我们可以把整个OA系统作为一个整体,即一个Portlet集成进Portal系统,也可以根据OA内不同的文件数据库(.nsf)俺功能拆分为各个不同的功能单元,每个功能单元作为一个单独的portlet