- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CAS3.2.1内外网映射问题的解决办法一般项目绝大数都是部署于某一个网络,要吗在内网,要不在外网,部署在内网的目前很多都通过VPN进行内网的访问。但对于一些项目是部署在内网,然后通过网络路由映射方式进行外网的访问,一般情况如果是通过自己开发的登陆此问题不需要进行任何改动,而当您使用了通用的CAS统一认证服务时,由于WEB应用工程中 web.xml配置的CAS地址是固定的,而不是一个动态的地址,当将WEB应用服务器例如TOMCAT端口映射外网后,在访问应用时会自动根据在web.xml文件中去配置对应的CAS地址,而此时的地址只能是内网使用,外网自然无法找到,则无法登陆,而由于项目的本身需要,必须要同时内外网都能访问,而应用已使用了CAS再来变更带来一些不便,同时CAS统一认证方面安全性还是较为有优势的,根据这一情况,前期进行了大量的咨询,都没能找得很好的解决办法,对于公司内部也无人能够解决,后通过百度搜索到了大量信息,并进行了测试,发现很多都无法满足自己的需要,后在无意中发现CNBlogs的一位作者名为BetterFuture的在自己博文中对CAS内外网功能的一个介绍,但由于没有进行全部的解说和一些代码的问题,并未能成功解决,后联系上了作者,并在其指导下完成自己的项目内网外功能,在此本人根据自己项目的情况进行了一次总结,以便于帮助更多的人;本案例以CAS-Client-3.2.1为例进行说明,对应的服务端为CAS-Server-3.5.2,目前客户端最新的为CAS-Client-3.3.3,对应CAS-Server-4.0以上,其不同版本源码虽有所改变,但此方法仍适用,可以直接用于CAS-Client-3.3.3版本。第一步,首先要先下载cas-client-3.2.1-release.zip源文件,使用压缩软件打开,其中cas-client-core即为cas-client-core-3.2.1.jar的源代码,其下载地址为:/cas-clients/第二步,将解压的cas-client-core目录导入到Eclipse或MyEclipse工程中,建立JavaProject,生成.project和.classpath文件,即可开始源代码的修改工作,目前这些源代码工程都是使用Maven来构建的,关于Maven不在本文范畴故而不再赘述!第三步,修改源代码,新增工具类,以实现内外网的访问,当完成上述导入后,在Eclipse或MyEclipse中的目录结构应如下:第四步,在org.jasig.cas.client.util下继续新增工具类PropertiesUtil代码如下:12345678910111213141516171819202122232425262728293031package org.jasig.cas.client.util;import java.io.FileInputStream;import java.io.IOException;import java.util.Enumeration;import java.util.HashMap;import java.util.Map;import java.util.Properties;public class PropertiesUtil {public static MapString, String readProperties(String path) { MapString, String map = new HashMapString, String(); try { Properties props = new Properties();props.load(new FileInputStream(path)); Enumeration? enum1 = pertyNames();while(enum1.hasMoreElements()) { String strKey = (String) enum1.nextElement(); String strValue = props.getProperty(strKey);map.put(strKey, strValue); } } catch (IOException e) {e.printStackTrace(); } return map; }}第五步,在org.jasig.cas.client.util下继续新增工具类HttpConnectionUtil代码如下:12345678910111213
文档评论(0)