EAS Cloud 单点登录实施指南

1 第一章 概述
1.1 什么是单点登录
单点登录(Single Sign On),简称为 SSO,是目前企业应用身份认证整合不可或缺的部分。SSO通俗概念:单点登录环境下的多个应用系统,用户只需要登录一次就可以直接访问各应用系统,而无需进行多次登录。
单点登录隶属于EAS中的身份认证管理模块。
1.2 单点登录的作用
通过单点登录技术可以对企业各异构应用系统的登录认证及用户身份信息进行集成,统一企业的身份认证,使企业用户只需要登录一次即可访问各应用系统,从而提高企业各应用系统的易用性、安全性及简化IT管理。
1.3 EAS的单点登录
1.3.1 EAS单点登录总体概述

图. EAS单点登录服务组件层次关系图
EAS的单点登录主要包含三个服务组件:认证校验处理器、认证集成组件和用户集成组件。认证校验处理器是基础,认证集成组件依赖认证校验处理器,用户集成组件在身份信息同步时用到如AD域和LDAP认证时。
1.3.2 认证校验处理器
认证校验处理器主要用于定义认证接口,实现认证的核心逻辑,支持不同的用户认证方案,通过在EAS系统中配置不同的认证处理器即可实现不同的认证方案。认证校验处理器简称认证处理器。
用户认证校验处理器支持自定义扩展,通过二次开发实现EAS的认证接口,从而实现用户自定义的认证方案。
EAS标准产品支持提供以下认证校验处理器:
l EAS 传统认证处理器,EAS连接数据库进行认证。
l 微软AD域认证处理器;
l LDAP域认证处理器;
l LTPA认证处理器,LTPA Token集成认证所依赖的认证处理器。
1.3.3 CAS集成认证组件
基于开源的CAS单点登录应用框架,单点登录就是由该组件实现。CAS分为CAS Server(CAS 服务端)和CAS Client(CAS客户端),CAS Server在EAS中特指/eassso应用,EAS门户就是通过/eassso应用登录进去的,CAS Client是与应用绑定在一起的,EAS中的应用/easportal /portal /easweb就内嵌绑定了CAS Client。CAS单点登录就是通过CAS Server与CAS Client的交互来完成的。
1.3.4 LTPA认证集成组件
LTPA:轻量级第三方认证(Lightweight Third Party Authentication),LTPA主要是利用对称加解密的原理来完成登录认证,主要应用于第三方系统与EAS整合的场景。
1.3.5 用户集成组件
用户集成组件主要用于将第三方数据源的用户账号信息同步到EAS系统中,并且与EAS系统中的用户建立起对应的映射关系;其主要包括用户数据导入和用户映射两个管理模块。
目前EAS支持的导入数据源的类型主要是LDAP服务器 (包括微软AD域服务器)。(注:集成数据库类型的数据源可通过EAI平台来完成)
2 单点登录需求分析及实施
分析和实现客户单点登录集成需求主要有以下几个步骤:
2.1 用户单点登录集成需求调研
需求调研阶段需要详细对客户现有的业务系统进行调研,了解清楚客户期望的单点登录集成的效果和目标。
调研参考内容有如下几点:
l 各业务系统主要信息:包括业务系统基于的技术语言(Java/NET等)、用户数据库类型(Oracle/DB2等)和用户数量规模等信息。
l 用户登录过程说明:包括各业务系统在登录时需要进行的验证过程和验证所需信息等。
l 单点登录集成需求目标:包括用户期望达到的单点登录集成目标,界面流展现其单点登录过程和要求,以及基准用户库( 原有业务系统数据库、新数据库或者LDAP目录服务器)等。
2.2 确定单点登录集成实现方案
确定实现方案阶段主要做以下几个工作:
l 首先确定基准用户库及用户管理工具
l 然后制订各系统与基准用户库的映射和同步策略
l 最后确定单点登录集成实现方案
2.3 制订单点登录集成实现计划
制订计划阶段因各业务系统的运行环境可能差异比较大,可能是异构平台,用户的统一和同步映射处理也需要时间,已有系统也在线使用中,因此,需要制订好详细的实现计划,以规避和降低风险。
2.4 开发配置实现单点登录集成
开发集成阶段主要做以下几个工作:
l 根据各业务系统实际情况,进行相应接口的开发(包括用户同步/映射)
l 完成开发后进行相关配置
l 部署单点登录集成实现方案并在测试环境进行测试
3 单点登录认证服务的集成与实现
3.1 用户认证校验处理器
用户认证校验处理器是单点登录集成过程中,某一种认证方式具体的认证逻辑的实现,EAS标准产品中支持几种常用的认证处理器,同时也支持二次开发扩展自己的认证处理器。
3.1.1 EAS标准产品支持的认证处理器
EAS标准产品支持的认证处理器信息如表3.1所示:
表3.1 EAS支持的认证处理器
认证处理器 | 名称 | 认证处理器实现类 | 说明 |
EAS 传统(用户名密码)认证 | BaseDB | com.kingdee.eas.cp.eip.sso.EasDefaultAuthHandler | EAS传统认证,基于EAS数据库中的用户名密码进行认证校验 |
LDAP域认证 | BaseLDAP | com.kingdee.eas.cp.eip.sso.ldap.LdapAuthHandler | 基于LDAP协议的目录用户认证 |
微软AD域认证 | aseAD | com.kingdee.eas.cp.eip.sso.ad.ActiveDirAuthHandler | 基于微软活动目录(AD)进行用户管理,采用kerberors LoginModule进行认证校验 |
LTPA认证 | BaseTrdLtpaToken | com.kingdee.eas.cp.eip.sso.ltpa.LtpaTokenAuthHandler | LTPA Token认证 |
3.1.2 注册和配置认证处理器实现类
在确定了单点登录集成的认证方案后,需要通过配置来切换不同的认证处理器,从而实现不同的单点登录认证方案。其配置方法如下:
首先,在服务器server\profiles\server(1...n)\config\portalConfig目录下打开认证处理器的配置文件easAuthPatterns.xml,其配置内容及格式如下:
<authPatterns>
<authPattern>
<name>BaseDB</name>
<displayName>BaseDB</displayName>
<authHandler>com.kingdee.eas.cp.eip.sso.EasDefaultAuthHandler</authHandler>
<description> Base Eas user table authentication,is Eas default Authentication</description>
</authPattern>
<default>BaseDB</default>
<scope>session</scope>
</authPatterns>
节点及参数说明:
l authPattern节点:表示某种认证处理器,包括:name、displayName、authHandler和description四个属性;
− name:认证处理器名称,请使用英文字母命名,且需在整个文档中命名唯一
− displayName:认证处理器显示名称;
− authHandler:认证处理器实现类的全路径类名;
− description:认证处理器的描述信息。
l default节点:表示EAS缺省使用的认证处理器,该值为配置文件中已定义authPattern节点的name值
l scope节点:表示EAS认证处理器的作用域,scope 仅能取以下值:
− application:EAS统一采用一种认证处理器,即由 default节点指定的认证处理器
− session:EAS允许用户根据工作场所,选择不同的认证处理器;如:外网可使用EAS传统认证、内网则使用AD认证(即域用户认证)
注意:EAS Portal标准产品的登录窗口未提供认证模式选择项,即此方式是为了与第三方系统集成预留的,以便可通过URL参数authPattern或进行登录页个性化开发来指定用户登录认证模式。
如:以下URL为指定AD域用户自动登录
http://portalServer:port/easportal/autoLogin.jsp?authPattern=BaseADWithAutoLogin
然后,加入新的认证处理器 (即:authPattern节点) 并且将EAS缺省使用的认证处理器修改成该节点名称 (即:修改default节点) ,例如,现在需要将EAS的认证方式改成LTPA认证,则增加及修改的配置信息如下:
<authPatterns>
<authPattern>
<authPattern>
<name>BaseTrdLtpaToken</name>
<displayName>BaseTrdLtpaToken</displayName>
<authHandler>com.kingdee.eas.cp.eip.sso.ltpa.LtpaTokenAuthHandler</authHandler>
<description>Base third system's Lightweight Third Party Authentication</description>
</authPattern>
<default>BaseTrdLtpaToken</default>
<scope>session</scope>
</authPatterns>
另外,EAS标准产品中默认配置用户名密码认证处理器,即上面举例的第一段配置信息。
3.1.3 扩展第三方用户认证的认证处理器
如果EAS提供的认证处理器并不能满足客户的需求,则EAS也支持二次开发对用户认证处理器进行扩展,以实现其它的认证方案。其实现步骤如下:
l 实现EAS用户认证处理器统一接口,接口定义如下:
/* EAS SSO认证处理器接口 */
public interface IEasAuthHandler
/**
* 获取外部系统所映射的EAS USER名称
*/
public String getEasUserNumber(Context ctx, String externalUserNumber)
throws BOSLoginException;
/**
* 是否进行EAS 用户密码校验
*/
public boolean isVerifyEasUserPwd();
/**
* 用户认证校验接口
*/
public boolean authenticate(UserContextCallback userCtxCallback, String userNumber, String password) throws BOSLoginException;
}
接口说明:
− public String getEasUserNumber(Context ctx, String externalUserNumber)
外部系统用户转换为EAS 用户的接口,如:AD用户名转为EAS用户名
− public boolean isVerifyEasUserPwd()
此接口定义是否需要进行EAS传统用户名和密码的校验
− public boolean authenticate(UserContextCallback userCtxCallback, String userNumber, String password)
此接口为用户认证校验接口,若用户认证通过,则返回true,若不通过则返回false
l 将新开发的用户认证处理器部署到EAS服务器环境中,并采用3.1.2节中的方法将该用户认证处理器注册成EAS缺省使用的认证处理器。
3.1.4 扩展认证处理器参考实现EAS 用户认证登录配置
EAS提供的微软AD域认证处理器实现用户认证处理器接口的代码如下:
/* AbstractEasAuthHandler类实现了IEasAuthHandler接口*/
public class ActiveDirAuthHandler extends AbstractEasAuthHandler {
public boolean authenticate(UserContextCallback userCtxCallback,
String userNumber, String password) throws BOSLoginException {
boolean result = false ;
LoginContext lc = null ;
try {
/* Set up the Callback handler, and initialise the userid and password fields */
UserPwdCallbackHandler ch = new UserPwdCallbackHandler();
ch.setUserId(userNumber);
ch.setPasswords(password);
/* Initialise the login context */
/* set to use Krb5LoginModule. */
/* 实际用户认证由com.sun.security.auth.module.Krb5LoginModulele类处理 */
lc = new LoginContext(ActiveDirAuthHandler.class.getName(), ch);
/* Perform the authentication */
lc.login();
result = true ;
} catch (LoginException le) {
}
return result;
}
}
3.1.5 EAS用户认证登录类及相关配置
EAS 用户认证采用了标准的JAAS (JAVA认证和授权服务:Java Authentication and Authorization Service) 的服务,JAAS的详细信息请参见附录1用户认证的LoginModule类可很方便的插拨或堆叠,其配置是通过服务端\server\properties目录下的login.config文件来实现的,login.config文件配置了EAS 默认使用的LoginModule,通常情况下,该配置文件无须更改,该配置文件内容如下:
eas {
com.kingdee.eas.cp.eip.sso.EasMultiAuthLoginModule required debug=true;
};
com.kingdee.eas.cp.eip.sso.web.auth.EASAuthHandler {
com.kingdee.eas.cp.eip.sso.EasMultiAuthLoginModule required debug=true;
};
com.kingdee.eas.cp.eip.sso.ad.ActiveDirAuthHandler
{
com.sun.security.auth.module.Krb5LoginModule required client=TRUE debug=true useTicketCache=FALSE;
};
说明:
l eas为EAS GUI客户端登录时所用LoginModule
l com.kingdee.eas.cp.eip.sso.web.auth.EASAuthHandler 为 EAS portal登录时所用LoginModule (注:实际上与eas的配置内容是相同的)
l com.kingdee.eas.cp.eip.sso.ad.ActiveDirAuthHandler 则用于与微软AD域认证集成,即在AD认证模式 (BaseAD) 下,此配置才起作用;
3.2 LDAP域认证方案的配置与实现
LDAP域认证方案可以通过配置实现EAS GUI客户端和portal登录时用户在LDAP服务器上进行认证,若需先同步用户请参见3.5章节,其配置步骤如下:
3.2.1 LDAP服务器连接参数配置
在服务端server\profiles\server(1...n)\config\portalConfig目录下的ldapConfig.properties文件用于配置连接LDAP服务器的参数,文件内容如下:
contextFactory=com.sun.jndi.ldap.LdapCtxFactory
ldapHost=192.168.16.2
ldapPort=389
authentication=simple
principal=username
credentials=password
参数说明:
l contextFactory:LDAP连接默认工厂类,
如果服务器使用的是Sun的JDK则应配置为:com.sun.jndi.ldap.LdapCtxFactory 如果服务器使用的是IBM的JDK则应配置为:com.ibm.jndi.ldap.LdapCtxFactory
l ldapHost:LDAP目录服务器IP地址
l ldapPort:LDAP目录服务器端口号,通常情况下缺省是389
l authentication:LDAP连接认证模式,通常情况下配置为simple
l principal:LDAP主体(身份标识),通常情况下配置为用户账号
l credentials:LDAP主体的凭证(密码),通常情况下配置为用户密码
将实际采用的LDAP目录服务器IP地址和端口号配置到该文件中。
3.2.2 配置LDAP域用户认证处理器
按照3.1.2节所述方法将LDAP域用户认证处理器配置到easAuthPatterns.xml文件中,LDAP域用户认证处理器的authPattern节点定义如下:
<authPattern>
<name>BaseLDAP</name>
<displayName>BaseLDAP</displayName>
<authHandler>com.kingdee.eas.cp.eip.sso.ldap.LdapAuthHandler</authHandler>
<description> Base LDAP Authentication</description>
</authPattern>
3.3 微软AD域认证方案的配置与实现
微软AD域认证方案可以通过配置实现EAS GUI客户端和portal登录时用户在微软AD域服务器上进行认证,若需先同步用户请参见3.5章节,其配置步骤如下:
(注意:由于AD域认证的实现需要使用SUN JDK 中的com.sun.security.auth.module.Krb5LoginModule类,而IBM JDK中的该类为com.ibm.security.auth.module.Krb5LoginModule,IBM JDK的实现主要在login.conf文件配置上略有不同,推荐使用SUN JDK)
3.3.1 AD域服务器连接参数配置
EAS采用基于Kerberos认证的配置文件与AD域服务器进行连接,Kerberos的详细信息请参见附录2,在服务端server\properties目录下的krb5.conf文件用于配置连接AD域服务器的参数,文件内容如下:
[libdefaults]
default_realm = KINGDEE.COM
default_tkt_enctypes = des3-cbc-sha1 rc4-hmac des-cbc-md5 des-cbc-crc
default_tgs_enctypes = des3-cbc-sha1 rc4-hmac des-cbc-md5 des-cbc-crc
permitted_enctypes = des3-cbc-sha1 rc4-hmac des-cbc-md5 des-cbc-crc
default_checksum = rsa-md5
clockskew = 360
[realms]
KINGDEE.COM= {
kdc = 192.168.16.2
}
[domain_realm]
.kingdee.com = KINGDEE.COM
[logging]
default = FILE:E:/EAS4.1/apusic/logs/default.log
kdc = FILE:E:/EAS4.1/apusic/logs/kdc.log
admin_server = FILE:E:/EAS4.1/apusic/logs/kadmin.log
kdc_rotate = {
period = 1d
versions = 10
}
参数说明:
l default_realm:为AD域控制全限定域名 (例如:KINGDEE.COM),注意:此参数值中的字母必须大写,如上配置参数所示。
l kdc :为AD域服务器IP地址,注意:该参数外层的参数必须同default_realm定义的域名相同,如上配置参数所示。
l domain_realm:该段中定义了应用实际域名或主机名和AD域名的映射关系,其定义格式和规范如上配置参数所示,一般为:.域名称(小写,最前面有个点) = 域名称(大写)。
实际使用中,用户只需要配置上面红色字体标注的部分,将实际采用的AD域服务器的域名和IP地址配置到该文件中。
SUN或IBM JDK6.0+版本请在[libdefaults]段配置allow_weak_crypto = true,启用弱加密算法以便匹配Windows AD域默认配置。
3.3.2 配置EAS用户认证登录类
在服务端\server\properties目录下的login.config文件中加入以下配置参数:
com.kingdee.eas.cp.eip.sso.ad.ActiveDirAuthHandler
{
com.sun.security.auth.module.Krb5LoginModule required client=TRUE debug=true useTicketCache=FALSE;
};
IBM JDK时配置则如下:
(com.kingdee.eas.cp.eip.sso.JAASAuthHandlerProxy为JAAS实现类):
com.kingdee.eas.cp.eip.sso.ad.ActiveDirAuthHandler
{
com.ibm.security.auth.module.Krb5LoginModule required debug=true;
};
com.kingdee.eas.cp.eip.sso.JAASAuthHandlerProxy {
com.ibm.security.auth.module.Krb5LoginModule required debug=true;
};
3.3.3 配置微软AD域用户认证处理器
按照3.1.2节所述方法将微软AD域用户认证处理器配置到easAuthPatterns.xml文件中,AD域用户认证处理器的authPattern节点定义如下:
<authPattern>
<name>BaseAD</name>
<displayName>BaseAD</displayName>
<authHandler>com.kingdee.eas.cp.eip.sso.ad.ActiveDirAuthHandler</authHandler>
<description> Base Microsoft AD Authentication</description>
</authPattern>
注:easAuthPatterns.xml文件中的default节点要改为<default> BaseAD </default>。
3.4 LTPA认证方案的配置与实现
EAS7.0.1 需打补丁PT056937 PT056987;EAS7.0.3需打补丁PT057543 PT057551解决Token串包含乱码问题,EAS7.5已包含以上补丁代码,打了补丁后,若之前有二次开发用到的LTPATokenManager.jar包,请重新向支持部索取。

图3.1 LTPA认证方案部署视图
LTPA是一个基于web的认证框架,LTPA的详细信息请参见附录3,EAS的LTPA认证方案是一种基于web的加密认证机制,通过EAS portal与第三方web应用系统进行集成,可以实现只需登录一次即可相互进行访问。其配置步骤如下:
3.4.1 配置密钥文件
服务端server\profiles\server(1...n)\config\portalConfig目录下的LtpaToken.properties文件即为LTPA Token 加密串的密钥,文件内容如下:
cookie.domain=.vanke.com
token.expiration=30
domino.secret=BTfa8F+HwNejYEGtuZSJTWOZ/t8\=
参数说明:
l cookie.domain:与Domino集成时才有用的参数,通常无需关注
l token.expiration:token串的有效时间,这里以分钟为单位,用于校验token串时检查其是否过期,其有效时间从生成token串时Web应用的系统时间开始算起,因此,LTPA认证集成机制要求被集成的各Web应用服务器的系统时间需要保持一致
l domino.secret:加密生成token串的密钥,该参数可以是任意指定的一个字符串,没有长度限制,部署实施时注意更换此密钥以增加安全性。
该文件需要在EAS服务器环境和要集成Web应用系统的环境中各保存一份,且密钥必须相同,注意:在EAS服务器环境中该文件的存放路径不用改变,即上述缺省路径即可,在第三方Web应用系统中该文件的存放路径可任意指定 (例如:D:\TrdWebApp\security)。
3.4.2 LTPA Token加密和校验接口介绍
在服务端server\lib\server\bos目录下的cp_sso-server.jar包包含了LTPA Token的生成和校验工具类com.kingdee.eas.cp.eip.sso.ltpa.
EAS Cloud 单点登录实施指南
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



