金蝶EASV75单点登录实施指南文档格式.docx
《金蝶EASV75单点登录实施指南文档格式.docx》由会员分享,可在线阅读,更多相关《金蝶EASV75单点登录实施指南文档格式.docx(42页珍藏版)》请在冰豆网上搜索。
图.EAS单点登录服务组件层次关系图
EAS的单点登录主要包含三个服务组件:
认证校验处理器、认证集成组件和用户集成组件。
认证校验处理器是基础,认证集成组件依赖认证校验处理器,用户集成组件在身份信息同步时用到如AD域和LDAP认证时。
1.3.2认证校验处理器
认证校验处理器主要用于定义认证接口,实现认证的核心逻辑,支持不同的用户认证方案,通过在EAS系统中配置不同的认证处理器即可实现不同的认证方案。
认证校验处理器简称认证处理器。
用户认证校验处理器支持自定义扩展,通过二次开发实现EAS的认证接口,从而实现用户自定义的认证方案。
EAS标准产品支持提供以下认证校验处理器:
●EAS传统认证处理器,EAS连接数据库进行认证。
●微软AD域认证处理器;
●LDAP域认证处理器;
●LTPA认证处理器,LTPAToken集成认证所依赖的认证处理器。
1.3.3CAS集成认证组件
基于开源的CAS单点登录应用框架,单点登录就是由该组件实现。
CAS分为CASServer(CAS服务端)和CASClient(CAS客户端),CASServer在EAS中特指/eassso应用,EAS门户就是通过/eassso应用登录进去的,CASClient是与应用绑定在一起的,EAS中的应用/easportal/portal/easweb就内嵌绑定了CASClient。
CAS单点登录就是通过CASServer与CASClient的交互来完成的。
1.3.4LTPA认证集成组件
LTPA:
轻量级第三方认证(LightweightThirdPartyAuthentication),LTPA主要是利用对称加解密的原理来完成登录认证,主要应用于第三方系统与EAS整合的场景。
1.3.5用户集成组件
用户集成组件主要用于将第三方数据源的用户账号信息同步到EAS系统中,并且与EAS系统中的用户建立起对应的映射关系;
其主要包括用户数据导入和用户映射两个管理模块。
目前EAS支持的导入数据源的类型主要是LDAP服务器(包括微软AD域服务器)。
(注:
集成数据库类型的数据源可通过EAI平台来完成)
2单点登录需求分析及实施
分析和实现客户单点登录集成需求主要有以下几个步骤:
2.1用户单点登录集成需求调研
需求调研阶段需要详细对客户现有的业务系统进行调研,了解清楚客户期望的单点登录集成的效果和目标。
调研参考内容有如下几点:
●各业务系统主要信息:
包括业务系统基于的技术语言(Java/NET等)、用户数据库类型(Oracle/DB2等)和用户数量规模等信息。
●用户登录过程说明:
包括各业务系统在登录时需要进行的验证过程和验证所需信息等。
●单点登录集成需求目标:
包括用户期望达到的单点登录集成目标,界面流展现其单点登录过程和要求,以及基准用户库(原有业务系统数据库、新数据库或者LDAP目录服务器)等。
2.2确定单点登录集成实现方案
确定实现方案阶段主要做以下几个工作:
●首先确定基准用户库及用户管理工具
●然后制订各系统与基准用户库的映射和同步策略
●最后确定单点登录集成实现方案
2.3制订单点登录集成实现计划
制订计划阶段因各业务系统的运行环境可能差异比较大,可能是异构平台,用户的统一和同步映射处理也需要时间,已有系统也在线使用中,因此,需要制订好详细的实现计划,以规避和降低风险。
2.4开发配置实现单点登录集成
开发集成阶段主要做以下几个工作:
●根据各业务系统实际情况,进行相应接口的开发(包括用户同步/映射)
●完成开发后进行相关配置
●部署单点登录集成实现方案并在测试环境进行测试
3单点登录认证服务的集成与实现
3.1用户认证校验处理器
用户认证校验处理器是单点登录集成过程中,某一种认证方式具体的认证逻辑的实现,EAS标准产品中支持几种常用的认证处理器,同时也支持二次开发扩展自己的认证处理器。
3.1.1EAS标准产品支持的认证处理器
EAS标准产品支持的认证处理器信息如表3.1所示:
表3.1EAS支持的认证处理器
认证处理器
名称
认证处理器实现类
说明
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)进行用户管理,采用kerberorsLoginModule进行认证校验
LTPA认证
BaseTrdLtpaToken
com.kingdee.eas.cp.eip.sso.ltpa.LtpaTokenAuthHandler
LTPAToken认证
3.1.2注册和配置认证处理器实现类
在确定了单点登录集成的认证方案后,需要通过配置来切换不同的认证处理器,从而实现不同的单点登录认证方案。
其配置方法如下:
首先,在服务器server\profiles\server(1...n)\config\portalConfig目录下打开认证处理器的配置文件easAuthPatterns.xml,其配置内容及格式如下:
<
authPatterns>
<
authPattern>
<
name>
BaseDB<
/name>
displayName>
/displayName>
authHandler>
com.kingdee.eas.cp.eip.sso.EasDefaultAuthHandler<
/authHandler>
description>
BaseEasusertableauthentication,isEasdefaultAuthentication<
/description>
/authPattern>
default>
/default>
scope>
session<
/scope>
/authPatterns>
节点及参数说明:
●authPattern节点:
表示某种认证处理器,包括:
name、displayName、authHandler和description四个属性;
−name:
认证处理器名称,请使用英文字母命名,且需在整个文档中命名唯一
−displayName:
认证处理器显示名称;
−authHandler:
认证处理器实现类的全路径类名;
−description:
认证处理器的描述信息。
●default节点:
表示EAS缺省使用的认证处理器,该值为配置文件中已定义authPattern节点的name值
●scope节点:
表示EAS认证处理器的作用域,scope仅能取以下值:
−application:
EAS统一采用一种认证处理器,即由default节点指定的认证处理器
−session:
EAS允许用户根据工作场所,选择不同的认证处理器;
如:
外网可使用EAS传统认证、内网则使用AD认证(即域用户认证)
注意:
EASPortal标准产品的登录窗口未提供认证模式选择项,即此方式是为了与第三方系统集成预留的,以便可通过URL参数authPattern或进行登录页个性化开发来指定用户登录认证模式。
以下URL为指定AD域用户自动登录
http:
//portalServer:
port/easportal/autoLogin.jsp?
authPattern=BaseADWithAutoLogin
然后,加入新的认证处理器(即:
authPattern节点)并且将EAS缺省使用的认证处理器修改成该节点名称(即:
修改default节点),例如,现在需要将EAS的认证方式改成LTPA认证,则增加及修改的配置信息如下:
BaseTrdLtpaToken<
com.kingdee.eas.cp.eip.sso.ltpa.LtpaTokenAuthHandler<
Basethirdsystem'
sLightweightThirdPartyAuthentication<
另外,EAS标准产品中默认配置用户名密码认证处理器,即上面举例的第一段配置信息。
3.1.3扩展第三方用户认证的认证处理器
如果EAS提供的认证处理器并不能满足客户的需求,则EAS也支持二次开发对用户认证处理器进行扩展,以实现其它的认证方案。
其实现步骤如下:
●实现EAS用户认证处理器统一接口,接口定义如下:
/*EASSSO认证处理器接口*/
publicinterfaceIEasAuthHandler
/**
*获取外部系统所映射的EASUSER名称
*/
publicStringgetEasUserNumber(Contextctx,StringexternalUserNumber)
throwsBOSLoginException;
*是否进行EAS用户密码校验
publicbooleanisVerifyEasUserPwd();
*用户认证校验接口
publicbooleanauthenticate(UserContextCallbackuserCtxCallback,StringuserNumber,Stringpassword)throwsBOSLoginException;
}
接口说明:
−publicStringgetEasUserNumber(Contextctx,StringexternalUserNumber)
外部系统用户转换为EAS用户的接口,如:
AD用户名转为EAS用户名
−publicbooleanisVerifyEasUserPwd()
此接口定义是否需要进行EAS传统用户名和密码的校验
−publicbooleanauthenticate(UserContextCallbackuserCtxCallback,StringuserNumber,Stringpassword)
此接口为用户认证校验接口,若用户认证通过,则返回true,若不通过则返回false
●将新开发的用户认证处理器部署到EAS服务器环境中,并采用3.1.2节中的方法将该用户认证处理器注册成EAS缺省使用的认证处理器。
3.1.4扩展认证处理器参考实现EAS用户认证登录配置
EAS提供的微软AD域认证处理器实现用户认证处理器接口的代码如下:
/*AbstractEasAuthHandler类实现了IEasAuthHandler接口*/
publicclassActiveDirAuthHandlerextendsAbstractEasAuthHandler{
publicbooleanauthenticate(UserContextCallbackuserCtxCallback,
StringuserNumber,Stringpassword)throwsBOSLoginException{
booleanresult=false;
LoginContextlc=null;
try{
/*SetuptheCallbackhandler,andinitialisetheuseridandpasswordfields*/
UserPwdCallbackHandlerch=newUserPwdCallbackHandler();
ch.setUserId(userNumber);
ch.setPasswords(password);
/*Initialisethelogincontext*/
/*settouseKrb5LoginModule.*/
/*实际用户认证由com.sun.security.auth.module.Krb5LoginModulele类处理*/
lc=newLoginContext(ActiveDirAuthHandler.class.getName(),ch);
/*Performtheauthentication*/
lc.login();
result=true;
}catch(LoginExceptionle){
}
returnresult;
}
3.1.5EAS用户认证登录类及相关配置
EAS用户认证采用了标准的JAAS(JAVA认证和授权服务:
JavaAuthenticationandAuthorizationService)的服务,JAAS的详细信息请参见附录1用户认证的LoginModule类可很方便的插拨或堆叠,其配置是通过服务端\server\properties目录下的login.config文件来实现的,login.config文件配置了EAS默认使用的LoginModule,通常情况下,该配置文件无须更改,该配置文件内容如下:
eas{
com.kingdee.eas.cp.eip.sso.EasMultiAuthLoginModulerequireddebug=true;
};
com.kingdee.eas.cp.eip.sso.web.auth.EASAuthHandler{
{
com.sun.security.auth.module.Krb5LoginModulerequiredclient=TRUEdebug=trueuseTicketCache=FALSE;
说明:
●eas为EASGUI客户端登录时所用LoginModule
●com.kingdee.eas.cp.eip.sso.web.auth.EASAuthHandler为EASportal登录时所用LoginModule(注:
实际上与eas的配置内容是相同的)
●com.kingdee.eas.cp.eip.sso.ad.ActiveDirAuthHandler则用于与微软AD域认证集成,即在AD认证模式(BaseAD)下,此配置才起作用;
3.2LDAP域认证方案的配置与实现
LDAP域认证方案可以通过配置实现EASGUI客户端和portal登录时用户在LDAP服务器上进行认证,若需先同步用户请参见3.5章节,其配置步骤如下:
3.2.1LDAP服务器连接参数配置
在服务端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
参数说明:
●contextFactory:
LDAP连接默认工厂类,
如果服务器使用的是Sun的JDK则应配置为:
com.sun.jndi.ldap.LdapCtxFactory如果服务器使用的是IBM的JDK则应配置为:
com.ibm.jndi.ldap.LdapCtxFactory
●ldapHost:
LDAP目录服务器IP地址
●ldapPort:
LDAP目录服务器端口号,通常情况下缺省是389
●authentication:
LDAP连接认证模式,通常情况下配置为simple
●principal:
LDAP主体(身份标识),通常情况下配置为用户账号
●credentials:
LDAP主体的凭证(密码),通常情况下配置为用户密码
将实际采用的LDAP目录服务器IP地址和端口号配置到该文件中。
3.2.2配置LDAP域用户认证处理器
按照3.1.2节所述方法将LDAP域用户认证处理器配置到easAuthPatterns.xml文件中,LDAP域用户认证处理器的authPattern节点定义如下:
BaseLDAP<
com.kingdee.eas.cp.eip.sso.ldap.LdapAuthHandler<
BaseLDAPAuthentication<
3.3微软AD域认证方案的配置与实现
微软AD域认证方案可以通过配置实现EASGUI客户端和portal登录时用户在微软AD域服务器上进行认证,若需先同步用户请参见3.5章节,其配置步骤如下:
(注意:
由于AD域认证的实现需要使用SUNJDK中的com.sun.security.auth.module.Krb5LoginModule类,而IBMJDK中的该类为com.ibm.security.auth.module.Krb5LoginModule,IBMJDK的实现主要在login.conf文件配置上略有不同,推荐使用SUNJDK)
3.3.1AD域服务器连接参数配置
EAS采用基于Kerberos认证的配置文件与AD域服务器进行连接,Kerberos的详细信息请参见附录2,在服务端server\properties目录下的krb5.conf文件用于配置连接AD域服务器的参数,文件内容如下:
[libdefaults]
default_realm=KINGDEE.COM
default_tkt_enctypes=des3-cbc-sha1rc4-hmacdes-cbc-md5des-cbc-crc
default_tgs_enctypes=des3-cbc-sha1rc4-hmacdes-cbc-md5des-cbc-crc
permitted_enctypes=des3-cbc-sha1rc4-hmacdes-cbc-md5des-cbc-crc
default_checksum=rsa-md5
clockskew=360
[realms]
KINGDEE.COM={
kdc=192.168.16.2
[domain_realm]
=KINGDEE.COM
[logging]
default=FILE:
E:
/EAS4.1/apusic/logs/default.log
kdc=FILE:
/EAS4.1/apusic/logs/kdc.log
admin_server=FILE:
/EAS4.1/apusic/logs/kadmin.log
kdc_rotate={
period=1d
versions=10
●default_realm:
为AD域控制全限定域名(例如:
KINGDEE.COM),注意:
此参数值中的字母必须大写,如上配置参数所示。
●kdc:
为AD域服务器IP地址,注意:
该参数外层的参数必须同default_realm定义的域名相同,如上配置参数所示。
●domain_realm:
该段中定义了应用实际域名或主机名和AD域名的映射关系,其定义格式和规范如上配置参数所示,一般为:
.域名称(小写,最前面有个点)=域名称(大写)。
实际使用中,用户只需要配置上面红色字体标注的部分,将实际采用的AD域服务器的域名和IP地址配置到该文件中。
SUN或IBMJDK6.0+版本请在[libdefaults]段配置allow_weak_crypto=true,启用弱加密算法以便匹配WindowsAD域默认配置。
3.3.2配置EAS用户认证登录类
在服务端\server\properties目录下的login.config文件中加入以下配置参数:
com.sun.security.auth.module.Krb5LoginModulerequiredclient=TRU