锁定老帖子 主题:CAS https方式改简单http方式
精华帖 (1) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (4)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-11
最后修改:2009-03-11
一、CAS客户端HTTPS改HTTP方式 1.修改所有使用到casclient.jar的项目中该jar包内edu.yale.its.tp.cas.util.SecureURL.class文件(需要进行反编译成java类文件“SecureURL.java”),将下边代码中对https访问方式的验证代码注释掉(绿色部分)。 public static String retrieve(String url) throws IOException { if (log.isTraceEnabled()) log.trace("entering retrieve(" + url + ")"); BufferedReader r = null; String s; try { URL u = new URL(url); /*if (!u.getProtocol().equals("https")) { log.error("retrieve(" + url + ") on an illegal URL since protocol was not https."); throw new IOException( "only 'https' URLs are valid for this method"); }*/ URLConnection uc = u.openConnection(); uc.setRequestProperty("Connection", "close"); r = new BufferedReader(new InputStreamReader(uc.getInputStream())); StringBuffer buf = new StringBuffer(); String line; while ((line = r.readLine()) != null) buf.append(line + "\n"); s = buf.toString(); } finally { try { if (r != null) r.close(); } catch (IOException ex) { } } return s; } 2.修改页面上的https开头的连接,改为http。 修改login.jsp页面内容
修改前:
<cas:auth var="netid" scope="session"> <cas:loginUrl>https://passport.com/login</cas:loginUrl> <cas:validateUrl>https://passport.com/proxyValidate</cas:validateUrl> </cas:auth> 修改后: <cas:auth var="netid" scope="session"> <cas:loginUrl>http://passport.com:8080/login</cas:loginUrl> <cas:validateUrl>http://passport.com:8080/proxyValidate</cas:validateUrl> </cas:auth> 修改logout.jsp页面内容 修改前: <cas:logout var="netid" scope="session" logoutUrl="https://passport.com/logout"/> 修改后: <cas:logout var="netid" scope="session" logoutUrl="http://passport.com/logout"/> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-22
我感觉CAS应该有这个设置吧,怎么这么简单的一个小需求都要改代码实现呢?
|
|
返回顶楼 | |
发表时间:2009-04-23
这个好像是2.X的版本,是纯Servlet来写的..
当初我为了省个证书钱也是这么干的哈..不过会削弱安全性哦! |
|
返回顶楼 | |
发表时间:2009-08-05
不太明白楼主第二个步聚,请问楼主的cas版本是多少,我的是3.3.3,我下面没有login.jsp页面,而是casLoginView.jsp,页面里也没有"<cas:auth"这样的标签啊
|
|
返回顶楼 | |
发表时间:2009-08-21
我使用的是CAS的3.3.1版本,按照如下配置就可以了:
参考网上的做法,不使用SSL来传送TGC,这样就不用在WEB服务器上配置SSL,同时用户在访问时IE也不会跳出要安装证书的提示了。这样针对安全需求没有那么高的场景其实是带来很多方便的。 CAS不用SSL(既用http协议,不用https)不能实现跨域的原因是CAS的TGC(TicketGrantingCookie)生成时设置了安全属性为只能被https协议访问,http协议访问不到。 配置文件cas\WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml,这是在3.3版本中, 原有配置如下: <bean id="ticketGrantingTicketCookieGenerator" class="org.springframework.web.util.CookieGenerator"> <property name="cookieSecure" value="true " /> <property name="cookieMaxAge" value="-1" /> <property name="cookieName" value="CASTGC" /> <property name="cookiePath" value="/cas" /> </bean> 不同版本可能配置的方式不同,不过这个cookieSecure就是是否采用SSL来传递TGC,所以这里改成false就可以了。 SSL可以对通信的内容进行加密,防止通信内容被截取后泄露用户帐户信息。这在安全及级别较高的地方还是需要使用的。 |
|
返回顶楼 | |
浏览 10011 次