将CAS的HTTPS认证方式改为HTTP

来源:互联网 发布:盐与避难所mac版 编辑:程序博客网 时间:2024/05/17 02:09
一、CAS Server端的修改
1、找到cas\WEB-INF\deployerConfigContext.xml
对以下Bean增加参数p:requireSecure="false",该参数表示是否需要安全验证,即HTTPS,false为不采用,加上去之后如下:
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"   
       p:httpClient-ref="httpClient"  p:requireSecure="false"/>

2、找到cas\WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml
<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas" />
参数p:cookieSecure="true",同理为HTTPS验证相关,true为采用HTTPS验证,与deployerConfigContext.xml的参数保持一致。
参数p:cookieMaxAge="-1",简单说是COOKIE的最大生命周期,-1为无生命周期,即只在当前打开的IE窗口有效,IE关闭或重新打开其它窗口,仍会要求验证。可以根据需要修改为大于0的数字,比如3600等,意思是在3600秒内,打开任意IE窗口,都不需要验证。
3、找到cas\WEB-INF\spring-configuration\warnCookieGenerator.xml
<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas" />
两个参数与上面同理。应保持一致。
二、CAS Client端的修改
找到客户端使用的casclient.jar文件,借用反编译工具将相应的class文件反编译成java文件再进行下面的修改
1、找到edu.yale.its.tp.cas.client.filter.edu.yale.its.tp.cas.client.filter 

Java代码 
if (! casValidate.startsWith("https://")){  
            throw new ServletException("validateUrl must start with https://, its current value is [" + casValidate + "]");  
        }  
if (casServiceUrl != null){  
            if (! (casServiceUrl.startsWith("https://")|| (casServiceUrl.startsWith("http://") ))){  
                throw new ServletException("service URL must start with http:// or https://; its current value is [" + casServiceUrl + "]");  
            }  
        }  

把这两段内容注释掉(此目录下涉及修改的类文件有CASFilter.java、CASValidateFilter.java,其实所有的修改就是把与https有关的内容加以注释)

2、找到edu.yale.its.tp.cas.util.SecureURL 

Java代码 
if (!u.getProtocol().equals("https")){  
                // IOException may not be the best exception we could throw here  
                // since the problem is with the URL argument we were passed, not  
                // IO. -awp9  
                log.error("retrieve(" + url + ") on an illegal URL since protocol was not https.");  
                            throw new IOException("only 'https' URLs are valid for this method");  
            }  

把这段内容注释掉
0 0