
# 一、业务场景
很多客户经常需要使用自己的认证中心登录EAS Cloud,但是经常不是很确定改哪里,改哪里影响最小,可维护性最高。这时候需要有一个契合EAS Cloud的最佳二开解决方案进行参考。基于此,根据以往客户二开出现过的各种问题进行整理总结出的一套当前最佳二开解决方案。
# 二、实践思路
1、最小化改动标准代码,便于补丁升级后维护的便利性。
2、由于标准的验证过滤器做了一些额外的处理,不能直接在web.xml去掉标准SSO过滤器而加入自己的过滤器。
基于以上两点,采用在标准过滤器中嵌入客户自定义过滤的方式进行处理,具体实践方案如下:

# 三、详细设计
## (1)集成第三认证登录设计
以下是这个实践方案的详细设计,请结合下一章节【代码样例】说明进行参考。

## (2)第三方账号映射设计
由于使用第三方认证中心登录,登录的账号在EAS端的账号经常是不一致的,针对此种情况一般需要做映射二开处理。
一般有以下3种方案,选择其中一种方案即可。
### 1、第三方认证中心端处理
如果第三认证中心可以二开,建议使用此方案。

### 2、EAS端二开映射处理
如果需要再EAS端二开,则使用此方案,此方案在拿到第三方用户信息后做转换处理即可。

### 3、维护EAS已存在AD域映射表
T_SSO_External2EasUsers
此种方案限制条件:不会使用AD域登录方式,否则会和AD域登录映射冲突。

此方案需要维护映射表T_SSO_External2EasUsers,新增映射参考语句:
```
INSERT INTO T_SSO_External2EasUsers (FID,feasusername,fexternalusername ) VALUES (newbosid('149FF98E'),'eas账号','第三认证中心账号' )
```
# 四、代码样例
**代码请参考附件**
## (1)实践框架代码说明
### 1、标准会话校验过滤器
过滤器类:com.kingdee.bos.sso.client.filter.authentication.KDPortalAuthenticationFilter
修改作用:嵌入调用自定义过滤器
参考代码:doFilter中嵌入调用客户自定义认证过滤器。**嵌入点遵循原则:一定要在判断是否存在登录会话之后**

### 2、标准票据校验过滤器
过滤器类:com.kingdee.bos.sso.client.filter.validation.KDPortalTicketValidationFilter
修改作用:因为这里是标准票据校验,由于这个都会转到自定义嵌入过滤器校验处理,所以这里需要做忽略处理。
参考代码:doFilter核心代码参考如下

### 3、自定义嵌入过滤器
过滤器类:com.kingdee.bos.sso.client.