金蝶EAS_V7.5_单点登录实施指南
首先,在服务器server\\profiles\\server(1...n)\\config\\portalConfig目录下打开认证处理器的配置文件easAuthPatterns.xml,其配置内容及格式如下:
com.kingdee.eas.cp.eip.sso.EasDefaultAuthHandler
节点及参数说明:
?
authPattern节点:表示某种认证处理器,包括:name、displayName、authHandler和description四个属性;
?
name:认证处理器名称,请使用英文字母命名,且需在整个文档中命名唯一
? ? ? ?
displayName:认证处理器显示名称;
authHandler:认证处理器实现类的全路径类名; description:认证处理器的描述信息。
default节点:表示EAS缺省使用的认证处理器,该值为配置文件中已定义authPattern节点的name值
?
scope节点:表示EAS认证处理器的作用域,scope 仅能取以下值:
?
application:EAS统一采用一种认证处理器,即由 default节点指定的认证处理器
?
session:EAS允许用户根据工作场所,选择不同的认证处理器;如:外网可使用EAS传统认证、内网则使用AD认证(即域用户认证)
注意:EAS Portal标准产品的登录窗口未提供认证模式选择项,即此方式是为了与第三方系统集成预留的,以便可通过URL参数authPattern或进行登录页个性化开发来指定用户登录认证模式。 如:以下URL为指定AD域用户自动登录
http://portalServer:port/easportal/autoLogin.jsp?authPattern=BaseADWithAutoLogin
第11页,总53页
金蝶EAS_V7.5_单点登录实施指南
然后,加入新的认证处理器 (即:authPattern节点) 并且将EAS缺省使用的认证处理器修改成该节点名称 (即:修改default节点) ,例如,现在需要将EAS的认证方式改成LTPA认证,则增加及修改的配置信息如下:
com.kingdee.eas.cp.eip.sso.ltpa.LtpaTokenAuthHandler
另外,EAS标准产品中默认配置用户名密码认证处理器,即上面举例的第一段配置信息。
3.1.3 扩展第三方用户认证的认证处理器
如果EAS提供的认证处理器并不能满足客户的需求,则EAS也支持二次开发对用户认证处理器进行扩展,以实现其它的认证方案。其实现步骤如下:
?
实现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)
第12页,总53页
金蝶EAS_V7.5_单点登录实施指南
外部系统用户转换为EAS 用户的接口,如:AD用户名转为EAS用户名
?
public boolean isVerifyEasUserPwd()
此接口定义是否需要进行EAS传统用户名和密码的校验
?
public boolean authenticate(UserContextCallback userCtxCallback, String userNumber, String password)
此接口为用户认证校验接口,若用户认证通过,则返回true,若不通过则返回false
?
将新开发的用户认证处理器部署到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用户认证的
第13页,总53页
金蝶EAS_V7.5_单点登录实施指南
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; };
说明:
? ?
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 则用于与微软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
参数说明:
?
contextFactory:LDAP连接默认工厂类,
第14页,总53页
金蝶EAS_V7.5_单点登录实施指南
如果服务器使用的是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节点定义如下:
com.kingdee.eas.cp.eip.sso.ldap.LdapAuthHandler
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域服务器的参数,文件内容如下:
第15页,总53页