EAS Cloud 对接第三方认证中心后保留自认证二开方案

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

EAS Cloud 对接第三方认证中心后保留自认证二开方案

## 1、反编译类 类名:com.kingdee.bos.sso.client.filter.validation.KDPortalTicketValidationFilter 包路径:eas\server\lib\web\portal\bos_sso_client.jar 直接反编译实现,不要继承,继承需要改非常多配置,还会被补丁覆盖 ## 2、重写preFilter方法 ### 修改思路: 从第三方过来与eas自己的认证中心过来,请求头中的referer属性是不一样的,利用这个不同来区分票据是哪个中心生成的,从而将验证票据的地址进行修改来同时兼容自用认证和第三方认证。 ![image.webp](/download/01004dbd575fbfd7419d804ab68030f4f257.webp) ### 参考源码: (提供修改思路,具体以实际环境代码版本为基础修改) ``` HttpServletResponse resp = (HttpServletResponse) servletResponse; HttpServletRequest res = (HttpServletRequest) servletRequest; if (!FilterUtil.isUnFilter(servletRequest)) { String referer = res.getHeader("referer"); if (referer != null && referer.contains("172.19.106.10")) { this.setCasServerUrlPrefix("http://172.19.106.10:6888/eassso/"); } else { this.setCasServerUrlPrefix("http://" + res.getLocalAddr() + ":" + res.getLocalPort() + "/eassso/"); } constructLoginUrl(servletRequest); constructServerName(servletRequest); this.setTicketValidator(getTicketValidator()); return super.preFilter(servletRequest, servletResponse, filterChain); } else { filterChain.doFilter(servletRequest, servletResponse); return false; } ``` ### 二开问题跟踪: 将referer与拼接的地址打出来,方便跟踪问题 如果getLocalAddr()和getLocalPort()两个方法找不到,需要引apusic的包到编译环境,apusic\common\javaee.jar ### 温馨提示: 1、如果现场eas的地址是http://172.1.2.3:8080/portal,那ssoClient文件中的cas.client.serverName参数要等于http://172.1.2.3:8080 如果现场eas还配置了域名为http://www.easdemo.com/portal,那ssoClient文件中的cas.client.serverName参数可以等于http://www.easdemo.com或者http://172.1.2.3:8080(如果是使用域名场景,建议使用http://www.easdemo.com) 2、除了可以使用cas认证登录的话,还可以通过使用http://172.1.2.3:8080/eassso/login?service= http://172.1.2.3:8080/portal/main.jsp的方式来使用EAS原有的登录方式。 如果有配置域名的话,也可以通过使用http://www.easdemo.com/eassso/login?service= http://www.easdemo.com/portal/main.jsp的方式来使用EAS原有的登录方式。 ## 3、部署私包 eas/server/lib/sp ## 4、问题跟踪 Cas需要的日志级别是DEBUG 可以日志级别调高看一下更详细的CAS日志 eas\server\profiles\server*\config\log4j.properties log4j.rootLogger 属性 error 改成 DEBUG ## 5、兼容index2sso.jsp的登录方式 修改文件server\deploy\portal.ear\portal.war\index2sso.jsp 参考修改源码如下(提供修改思路,具体以实际环境代码版本为基础修改): ``` String easHost = "127.0.0.1:6888";//eas服务的ip端口 redirectTo = "http://"+easHost+"/eassso/login?dataCenter="+URLEncoder.encode(dataCenter,"UTF-8")+"&service="+URLEncoder.encode("http://"+easHost+redirectTo,"UTF-8"); HttpServletResponse resp = (HttpServletResponse) servletResponse; HttpServletRequest res = (HttpServletRequest) servletRequest; if (!FilterUtil.isUnFilter(servletRequest)) { String referer = res.getHeader("referer"); if (referer != null && referer.contains("172.19.106.10")) { this.setCasServerUrlPrefix("http://172.19.106.10:6888/eassso/"); } else { this.setCasServerUrlPrefix("http://" + res.getLocalAddr() + ":" + res.getLocalPort() + "/eassso/"); } constructLoginUrl(servletRequest); constructServerName(servletRequest); this.setTicketValidator(getTicketValidator()); return super.preFilter(servletRequest, servletResponse, filterChain); } else { filterChain.doFilter(servletRequest, servletResponse); return false; } ```

EAS Cloud 对接第三方认证中心后保留自认证二开方案

## 1、反编译类类名:com.kingdee.bos.sso.client.filter.validation.KDPortalTicketValidationFilter 包路径:eas\server\lib\web\porta...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息