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.LtpaTokenManager类,该类主要接口定义如下:
public static LtpaToken generate(String canonicalUser,String configFile);
public static boolean verifyToken(String path, String token, String userNumber);
接口说明如下:
l public static LtpaToken generate(String canonicalUser,String configFile);
该接口主要用于使用密钥文件LtpaToken.properties生成LTPA Token加密串。
参数说明:
− canonicalUser:登录用户账号
− configFile:LtpaToken.properties文件全路径 (例如:D:\TrdWebApp\security\LtpaToken.properties)
l public static boolean verifyToken(String path, String token, String userNumber);
该接口主要用于校验LTPA Token串的合法性。
参数说明:
− path:LtpaToken.properties文件全路径 (例如:D:\TrdWebApp\security\LtpaToken.properties),如果第三方应用通过webservice调用EAS提供的服务,该参数传入null值。
− token:使用generate接口生成的LTPA Token加密串
− userNumber:使用generate接口生成的LTPA Token加密串时传入的登录用户账号
3.4.3 第三方应用集成EAS portal(即:在第三方应用中打开EAS portal)的实现步骤
在第三方Web应用系统中集成EAS portal通常指,在第三方系统中增加一个EAS portal的访问地址,然后在再登录到第三方系统后,通过该访问地址可以直接进入到EAS portal中,该方案需要EAS portal和第三方系统都要做一些配置或开发工作,其集成步骤如下:
EAS系统需要做的配置工作:
l EAS 6.0 及sp1版本需要安装补丁PTM037265,EAS 7.0 sp1及以后版本则缺省包含该补丁内容;
l 将服务端server\profiles\server(1…n)\config\portalConfig目录下的ssoClient.properties文件中的sso.easIsSSOClient参数项的值修改为true;
l 将服务端server\profiles\server(1…n)\config\portalConfig目录下的autoLoginConfig.properties文件中的datacenter参数修改为EAS portal要登录的数据中心代码 (即:数据中心编码ID,EAS管理控制台可查看),并设置authPattern参数为BaseTrdLtpaToken,设置好locale语言项(L1=英文 L2=简体 L3=繁体);设置好dbType数据库类型(MS-SQL-SERVER=0 DB2=1 ORACLE=2)。
l 重新启动EAS 服务器;
第三方系统需要做的开发工作:
l 将LTPATokenManager.jar包(该包请联系金蝶的工程师获取)部署到第三方系统中;(注意:此方式只针对于第三方系统基于java语言实现,如果是基于.net 语言实现的系统则无法直接使用Token加密和校验java接口,需要以web service的方式调用Token加密和校验服务)
l 在第三方系统中增加如下代码逻辑:
− 获取登录用户账号
− 使用LtpaTokenManager的generate方法生成LTPA Token加密串
− c) 访问EAS portal的单点登录请求地址:
"http://<ip>:<port>/easportal/index2sso.jsp?username="+username+"&password="+password+"&redirectTo="+redirectTo
新门户则需要将/easportal替换成/portal,其他一样。
其中,参数username为登录用户账号;参数password为Token加密串;参数redirectTo为登录后跳转的portal应用的地址。
注:通常情况下如果只需要直接登录到portal的主页,则后面改写成+"&redirectTo=//"
示例jsp代码如下:
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page import="com.kingdee.eas.cp.eip.sso.ltpa.LtpaTokenManager,com.kingdee.eas.cp.eip.sso.ltpa.LtpaToken"%>
<%@ page import = "java.net.URLEncoder" %>
<%
String username = "user";
String password = LtpaTokenManager.generate(username, LtpaTokenManager.getDefaultLtpaConfig()).toString();
//新门户则需要将/easportal替换成/portal,其他一样。
String url = "http://192.168.33.243:6888/easportal/index2sso.jsp?username="+username+"&password="+password;
%>
<a href=<%=url%> target="_blank">EAS Portal</a>
完成以上工作后即实现了在第三方应用中集成EAS portal。
另外,如果第三方系统能够提供其它方案获取登录后的用户账号,则上述代码逻辑或jsp页面也可由EAS系统这边进行二次开发,使用第三方系统的方法获取用户账号并进行验证,然后按照上述实现步骤生成Token加密串,访问EAS portal的单点登录请求地址。
3.4.4 EAS portal集成第三方应用(即:在EAS portal中打开第三方应用)的实现步骤
通常情况下如果要在EAS portal中集成第三方应用系统应采用第三方应用系统的单点登录集成方式,如果第三方应用没有单点登录集成方式,则也可以通过进行二次开发来采用EAS的LTPA认证方案,其实现步骤如下:
第三方系统需要做的开发工作:
l 将3.3.1 所述LtpaToken.properties文件拷贝到第三方系统的任意目录中;
l 开发出支持传入用户名和LTPA Token加密串,校验通过后即可登录到第三方系统中的接口;
l 在该接口中调用LtpaTokenManager的verifyToken接口进行Token加密串合法性的校验
EAS系统需要做的开发工作:
在登录到portal后,获取到用户账号并且调用LtpaTokenManager的generate方法生成Token加密串,然后调用第三方系统开发的接口登录到第三方系统中。
3.5 用户集成组件
用户集成组件,主要解决EAS系统和其他各应用系统间用户信息的差异问题。可以使其他各应用系统的用户能够与EAS系统中的用户相对应,从而顺利单点登录到EAS系统中。
EAS系统同第三方应用系统的单点登录集成过程中,在配置和实现了一个具体的单点登录认证方案后,需要将第三方应用系统或者域服务器上的用户信息集成到EAS系统中,这样才能实现使用一个统一的用户访问单点登录集成的各个应用系统。
3.5.1 用户数据导入
用户数据导入可以实现将外部系统或服务器的用户信息集成到EAS系统中,是用户集成的第一步工作。
通过EAS系统中的【系统平台】->【外部数据管理】->【外部用户管理】->【用户数据导入】菜单可以打开用户数据导入的功能界面,如图3.1所示。
图3.2 用户数据导入功能界面
户数据导入功能及参数说明
打开用户数据导入的功能界面后点击“新建”按钮,新增一条外部用户数据导入数据源,该数据源的配置界面如图3.2所示:
图3.3 用户导入数据源配置界面
该界面参数说明:
l 用户数据源:为数据源的名称,可以是任意一个字符串
l 资源连接类型:该参数表明数据源的类型,由于通常情况下企业业务系统存储用户信息一般采用LDAP服务器或者数据库数据表两种方式,所以该参数有两个选项:一个是LDAP服务器 (注:微软AD域服务器是LDAP服务器的一种),另一个是数据库 (注:该功能已废弃,由EAI平台来完成)。
l 资源项连接地址:为LDAP服务器的ip地址
l 端口:为LDAP服务器的端口号,通常情况下缺省是389
l 资源专有名称DN:该参数通过后面的“获取BaseDN”按钮获得域中的namingContext (命名空间)
l 资源项登录用户名:为LDAP服务器中已定义的一个用户名
l 资源项登录密码:资源项登录用户名的登录密码
l 用户表用户名:LDAP服务器中代表EAS系统中用户登录账号的条目名称
l 用户表用户姓名:LDAP服务器中代表EAS系统中用户实名的条目名称
l 搜索返回值:该项不能编辑,由用户表用户名和用户表用户姓名自动生成
l 数据过滤条件:LDAP服务器中过滤出同步用户的过滤条件
l 同步用户初始化密码:使用外部用户登录时的初始密码
l 同步实现类:该参数有两个缺省选项,一个是“EAS默认用户同步”,另一个是“同步用户与职员匹配,并设置默认的组织和角色”,通常情况下选择“EAS默认用户同步”进行同步,另外,该参数也支持二次开发扩展的同步实现类。
l 引入实现:使用xml文件存储用户信息得引入引出实现类,通常情况下为空值
3.5.1.2
无
3.5.2 用户映射管理
用户映射管理的功能是在外部用户数据导入到EAS系统后,建立外部用户与EAS系统中用户的映射关系,使外部用户可以登录到EAS系统中,该功能是用户集成的第二步工作。
通过EAS系统中的【系统平台】->【外部数据管理】->【外部用户管理】->【用户映射管理】菜单可以打开用户映射管理的功能界面,如图3.4所示。
图3.5 用户映射管理功能界面
该界面有一个“自动映射”的功能,该功能是指系统自动将用户账号相同外部用户和EAS系统用户建立映射关系。
3.5.3 用户集成参数配置
在把外部用户集成到EAS系统中,并且与EAS系统中的用户建立映射关系后,需要修改一些配置参数,即可实现采用 LTPA认证方案使用外部用户登录到EAS系统中。
打开服务器端的server\profiles\server(1...n)\config\portalConfig目录下的ssoClient.properties文件,在其中增加以下两个参数:
l sso.user.mapping=true
参数说明:是否将外部用户账号同EAS用户账号进行了映射,若想使用外部用户账号进行登录则需要将该参数设置为true,否则设置为false
l sso.user.useExternalUser=true
参数说明:是否优先使用外部用户账号登录系统,参数设置为true则优先使用外部用户账号登录系统,参数设置为false则优先使用EAS用户账号登录系统
3.5.4 定义用户数据周期同步后台事务
为了方便外部用户数据周期自动进行同步,也可以通过EAS的后台事务来定义用户数据的周期同步功能,该功能可以做为实现用户集成的可选功能,其定义步骤如下:
l 通过EAS系统中的【系统平台】->【后台事务】->【后台事务定义】菜单可以打开后台事务定义的功能界面,如图3.5所示。
图3.6 后台事务定义功能界面
l 录入事务名称、设置生效、失效时间、以及选择用户同步任务,如图3.6所示。
图3.6 选择用户同步任务界面
l 打开“eas”->“协同平台” ->“单点登录”->“用户同步Facade”节点,如果设置导入用户的后台事务则选择“runUserSync”,如果设置自动映射用户的后台事务则选择“autoDealUser”。其中,选择runUserSync后需要设置两个参数:一个是ldapResxName,该参数设置资源名称,如:“dbc/mykingdee”或“dap/ad”,即:服务端server\profiles\server(1...n)\config\portalConfig目录下userSyncConfig.xml文件中的resource元素name属性值;另一个是autoCreateUser,该参数设置是否创建EAS用户,设置成true或者false。然后,设置事务调度计划,如图3.7所示。
图3.7 设置事务调度计划界面
l 保存并发布该后台事务。
3.6 CAS集成认证组件
由于EAS portal的单点登录对标准的CAS进行扩展,所以EAS portal也支持与其它标准的CAS服务器进行集成,通过其它CAS服务器进行用户认证和校验,其配置步骤如下:
3.6.1 CAS服务器参数配置
打开服务端server\profiles\server(1...n)\config\portalConfig\目录下的ssoclient.properties文件,该文件内容如下:
cas.server.renew=false
cas.server.proxyCallbackUrl=
sso.client.serverNameByRequestMap=true
cas.client.proxyCallbackUrl=
sso.client.redirectTo=/index_sso.jsp
sso.client.loginUrl=/ssoWelcome
sso.server.loginUrlByRequestMap=true
cas.server.gateway=false
cas.client.serverName=127.0.0.1:6888
cas.server.url=http://127.0.0.1:6888/eassso/
sso.easIsSSOClient=true
常用参数说明如下:
l sso.client.serverNameByRequestMap:是否将浏览器请求中的主机名和端口(如192.168.0.11:6888)覆盖掉cas.client.serverName配置项的值,该参数缺省为true。
l sso.server.loginUrlByRequestMap:是否将浏览器请求中的协议(http或https)、主机名和端口(如192.168.0.11:6888)覆盖掉cas.server.url配置项值的相同部分,该参数缺省为true,只有当SSO客户端和SSO服务端在相同主机名和端口下才可以设置成true,否则设置为false,该参数缺省为true。
l cas.client.serverName:CAS客户端应用的主机名和端口号,集群环境下配置实例的主机名与端口,此参数值在登录页时会包含在service查询参数中,Ticket校验时提交的这个值要与登录阶段一致。
l cas.server.url:CAS服务器URL,即eassso应用的访问地址,集群环境下配实例的主机名与端口,保证登录和Ticket检验都指向同一个实例。
l sso.easIsSSOClient:EAS portal是否启用CAS单点登录认证,参数缺省为true
l sso.client.redirectTo:单点登录认证通过后转向的应用主页(同一个应用SERVER同一个JVM下,只能有一个),相对路径
l sso.client.loginUrl:单点登录认证入口地址,相对路径
l cas.server.IsIndependentDeployment:是否采用第三方CAS服务器,该参数缺省没有,如果集成第三方CAS服务器则需要新增该参数
其中,集成第三方CAS服务器需要修改如下参数:
l 将cas.server.url参数修改为第三方CAS服务器的地址 (例如:https://localhost:8443/cas/)
l 将sso.server.loginUrlByRequestMap参数设置为false
l 将sso.easIsSSOClient参数设置为true
l 新增cas.server.IsIndependentDeployment参数并将其值设置为true
3.6.2 新增EAS登录所需要参数的配置文件
若集成第三方CAS服务器(cas.server.IsIndependentDeployment=true时),则需要配置以下这个文件。
在服务端server\profiles\server(1...n)\config\portalConfig\目录下新建CASLoginConfig.properties文件,其中文件内容如下:
solutionName = eas
dataCenter = eas600_nanche
locale = L2
DBType = 0
userAuthPattern = BaseDB
isPureWeb = true
redirectTo = null
userDomain =
loginFlow = true
sso.user.mapping=false
sso.user.useExternalUser=false
其中,将dataCenter参数修改为EAS登录的数据中心编码(EAS管理控制台可查看);locale为语言项(L1=英文 L2=简体 L3=繁体);DBType为数据库类型(MS-SQL-SERVER=0 DB2=1 ORACLE=2)。
EAS Cloud 单点登录实施指南
本文2024-09-22 20:16:02发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-112522.html