4.2以下cas server去掉https验证
4.2以下cas server去掉https验证
cas默认是采用https模式的,我们没有配置证书,所以要么配置证书,要么取消https的过滤,让http协议也能访问。
我们这里取消https的配置,让http也能访问。
需要修改三个地方的配置(针对4.0.0版本,其他版本的话第一处必改,其他的看看还有没有带有cookie的文件名)
修改一deployerConfigContext.xml增加参数p:requireSecure="false"
我们在tomcat的webapp中找到 cas/WEB-INF/deployerConfigContext.xml
里面有一句
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient"/>
这里需要增加参数p:requireSecure="false",requireSecure属性意思为是否需要安全验证,即HTTPS,false为不采用。修改后为:
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient" p:requireSecure="false"/>
修改二ticketGrantingTicketCookieGenerator.xml修改p:cookieSecure="false"
我们在tomcat的webapp中找到cas/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml
<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="true"
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas" />
参数p:cookieSecure="true",同理为HTTPS验证相关,TRUE为采用HTTPS验证,FALSE为不采用https验证。
参数p:cookieMaxAge="-1",简单说是COOKIE的最大生命周期,-1为无生命周期,即只在当前打开的IE窗口有效,IE关闭或重新打开其它窗口,仍会要求验证。可以根据需要修改为大于0的数字,比如3600等,意思是在3600秒内,打开任意IE窗口,都不需要验证。
这里把 cookieSecure修改为false就行了
修改三 warnCookieGenerator.xml修改p:cookieSecure="false"
我们在tomcat的webapp中找到cas/WEB-INF/spring-configuration/warnCookieGenerator.xml
里面有
<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="true"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas" />
参数p:cookieSecure="true",同理为HTTPS验证相关,TRUE为采用HTTPS验证,FALSE为不采用https验证。
这里把 cookieSecure修改为false就行了。
三个地方都修改好后我们就可以启动tomcat了,这时候https的方式已经取消,可以使用http的方式访问了。
修改四 客户端(看最下面的声明)
<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>过滤器下的参数url的HTTP改为HTTPS
声明:
工作中用的是cas3.0环境,我的是把项目不支持的http改为支持https,按照以上四处修改,可运行,当然证书还需要安装,tomcat也需要改设置
安全证书配置:
1.生成证书,在tomcat配置的JDK的bin路径下打开cmd窗口输入以下命令:
keytool -genkey -alias ssodemo -keyalg RSA -keysize 1024 -keypass zhoubang -validity 365 -keystore c:\zhoubang.keystore -storepass zhoubang
2.配置域名
这里的姓氏就是你的IP绑定的域名,有的博客说必须是域名,因为https后面只能跟域名,不能跟IP,cas在回调转入你想访问的客户端应用的时候,会出现No subject alternative names present错误异常信息(仅供参考,未测试)
3.导出证书
keytool -export -alias ssodemo -keystore c:\zhoubang.keystore -file c:\ssodemo.crt -storepass zhoubang
-file后面是crt路径,
-storepass 密码(一致)
5.客户端导入证书:把证书导入到JVM中,如果jdk路径下有cacerts,先删除
keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file c:\ssodemo.crt -alias ssodemo
jdk安装路径下如有空格,需要把整个路径用“”括起来
这里的密码必须输入changeit,不是你之前设置的密码
tomcat6.0 server.xml配置,http端口是8443,https端口是443
1.原8080端口配置,改为如下:redirectPort端口改为443
2.打开原8080端口下的注释,修改如下:redirectPort端口改为443,添加证书的位置和密码keystoreFile="D:/keystore",keystorePass="123456",以及开启URIEncoding="UTF-8" 不然项目汉字会乱码(加上也是上一道保险)
3,8009修改如下:redirectPort端口改为443
tomcat web.xml配置:强制开启http转https,如果用http访问,将强制转为https。放在</welcome-file-list>下面,</web-app>上面
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
以上便是工作中遇到的问题解答,自己对cas还不太清楚,所以很多地方不知其所以然
https://blog.****.net/zhurhyme/column/info/24775
https://jingyan.baidu.com/article/2d5afd6933a07b85a2e28e9d.html