KINGDEE DOC ID:KDSP_EAS_T_V3.0.0 专题设计文档 第 6 页 共 29 页 * @return
* @throws BOSLoginException */
public boolean authenticate(UserContextCallback userCtxCallback, String userNumber, String password) throws BOSLoginException; }
接口说明:
1. public String getEasUserNumber(Context ctx, String externalUserNumber)
为外部系统用户转换为EAS 用户的接口,如:AD用户名转为EAS用户名 2. public boolean isVerifyEasUserPwd()
此接口定义是否需要进行EAS传统用户认证
3. public boolean authenticate(UserContextCallback userCtxCallback, String userNumber,
String password)
此接口为用户认证校验证接口,若用户认证通过,则返回true,若不通过则返回false
3.1.2. 注册和登记认证处理器接口实现类
可通过配置认证模式文件来进行认证处理器实现类的注册和登记,配置文件存放地址为: êS_HOME%\\Server\\server\\deploy\\portalConfig\\easAuthPatterns.xml
此xml 格式请参见easAuthPatterns.dtd:
其中:
? authPattern
表示某种认证模式,包括:name(请使用项英文字母命名,且需在整个文档中唯一命名)、authHandler(为认证处理器全限定类名,如:com.kingdee.eas.cp.eip.sso.EasDefaultAuthHandler) 如:EAS传统认证模式(BaseDB)
com.kingdee.eas.cp.eip.sso.EasDefaultAuthHandler
6
KINGDEE DOC ID:KDSP_EAS_T_V3.0.0 专题设计文档 第 7 页 共 29 页
表示EAS认证模式作用域,scope 仅能取以下值:
1. application
若为application,则EAS系统统一采用一种认证模式,即由 default元素指定的认证模式。
2. session
若为session,则EAS系统允许用户根据工作场所,选择自己的登录认证模式,如:外网可使用EAS传统认证、内网则使用AD认证(即域用户认证) 如:
EAS用户可选择自己的登录方式 注意:
EAS Portal标准产品的登录窗口未提供认证模式选择项,即此方式是为了与第三方系统集成预留的,以便可通过URL参数authPattern或进行登录页个性化开发来指定用户登录认证模式。
如:以下URL为指定AD域用户自动登录
http://portalServer:port/easportal/autoLogin.jsp?authPattern=BaseADWithAutoLogin
? default
此值表明EAS系统将使用哪一种缺省认证模式,该值为配置文件中已定义认证模式的name
值,
如:设置为EAS传统认证模式
3.1.3. EAS SSO默认提供的认证处理器
通过查看配置文件easAuthPatterns.xml,可以看到EAS SSO默认提供以下几种认证处理器 Name BaseDB 认证处理器(全限定类名) Com.kingdee.eas.cp.eip.sso.EasDefaultAuthHandler 说明 EAS传统认证,基于EAS用户库进行认证校验 基于LDAP协议的目录用户认证,相关配置ldapConfig.properties请参见3.1.3.2 BaseAD Com.kingdee.eas.cp.eip.sso.ad.ActiveDirAuthHandler 基于微软活动目录BaseLDAP Com.kingdee.eas.cp.eip.sso.ldap.LdapAuthHandler 7
KINGDEE DOC ID:KDSP_EAS_T_V3.0.0 专题设计文档 第 8 页 共 29 页 (AD)进行用户管理,采用kerberors LoginModule进行认证校验,相关配置krb5.conf请参见3.1.3.3的说明 BaseADWithAutoLogin Com.kingdee.eas.cp.eip.sso.ad.AutoLoginADAuthHandler 基于微软活动目录(AD)进行用户管理,采用kerberors LoginModule进行认证校验、并通过IIS/IE“集成WINDOWS身份”功能进行域用户自动登录 BaseResourceOne Com.kingdee.eas.cp.eip.sso.EasAuthHandlerSample 提供认证处器样例,该样例不做任何处理(不作用户名转换映射,直接返回外部系统用户名、不进行EAS传统用户认证、用户认证通过),适用于EAS被其他SSO系统保护;
3.1.3.1. EAS 用户认证登录配置文件: login.config
EAS 用户认证采用了标准的JAAS(参见附录),用户认证LoginModule可很方便的插拨或堆叠,其配置是通过login.config来实现的,Login.config文件配置了EAS 默认使用的LoginModule,通常情况下,该配置文件无须更改:
此文件所在目录:êS_HOME%\\Server\\server\\deploy\\login.config
其配置如下: eas { };
com.kingdee.eas.cp.eip.sso.EasMultiAuthLoginModule required debug=true;
8
KINGDEE DOC ID:KDSP_EAS_T_V3.0.0 专题设计文档 第 9 页 共 29 页 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 useTicketCache=FALSE; };
说明:
? eas 为EAS GUI 登录时所用 LoginModule
? com.kingdee.eas.cp.eip.sso.web.auth.EASAuthHandler 为 Eas portal登录时所用LoginModule
(注:实际上与eas的配置内容是相同的) ? com.kingdee.eas.cp.eip.sso.ad.ActiveDirAuthHandler 则用于与MicroSoft 活动目录AD集成,
即在AD认证模式(BaseAD 或 BaseADWithAutoLogin)下,此配置才起作用;
3.1.3.2. LDAP连接参数配置文件ldapConfig.properties
此配置文件用于BaseLDAP认证模式,是用于建立目录服务认证及连接的配置文件。 此文件所在目录:êS_HOME%\\Server\\server\\deploy\\portalConfg\\ldapConfig.properties
required
client=TRUE
debug=true
相关连接参数说明如下:
#ldap连接默认工厂类,通常为以下值
contextFactory=com.sun.jndi.ldap.LdapCtxFactory #ldap连接认证模式,通常为simple authentication=simple #目录服务器地址 ldapHost=192.168.18.189 #ldap协议端口,缺省389 ldapPort=389
9
KINGDEE DOC ID:KDSP_EAS_T_V3.0.0 专题设计文档 第 10 页 共 29 页 3.1.3.3. 基于Kerberos认证的配置文件:krb5.conf
此配置文件用于BaseAD 或BaseADWithAutoLogin认证模式,MicroSoft 活动目录通常使用kerberos协议来进行安全认证(当然AD也支持LDAP协议,因此,也可通过BaseLDAP方式进行认证,Kerberos有关内容请参见附录)。
该配置文件存放路径:êS_HOME%\\Server\\server\\deploy\\portalConfg\\krb5.conf
相关配置参数说明如下: [libdefaults]
default_realm = KDSV [realms]
KDSV = {
kdc = 192.168.16.2 }
[domain_realm]
.kdsv = KDSV
其中:
? KDSV 通常为域控制全限定域名(如:KINGDEE.COM),请依据实际环境调整 ? kdc 为AD服务器IP地址,如:192.168.16.2 ? kerberos认证模式,还需检查login.config配置,增加krberos loginModule配置,请参见3.1.3.1有关说明 3.1.4. 参考实现:Microsoft Active Directory认证处理器
public class ActiveDirAuthHandler extends AbstractEasAuthHandler {
private static Logger logger =
Logger.getLogger(ActiveDirAuthHandler.class.getName());
public boolean authenticate(UserContextCallback userCtxCallback,
String userNumber, String password) throws BOSLoginException {
boolean result = false ; LoginContext lc = null ;
10