过程中遇到的坑如下:
1. 往jre导入证书时报错: java.io.IOException: Keystore was tampered with, or password was incorrect
报错从字面上看是导入证书时keystore错误或密码错误,遇到这个错误首先确认你的密码时候正确;如果确定密码正确但是依然报错,那么就请删除你的$JAVA_HOME\jre6\lib\security\cacerts文件;然后重新导入证书;当然删除前最好是想备份一下。
2. 登录clientOne调整到认证中心cas-server认证通过后调整回clientOne,再次登录clientTwo直接地址重定向到clientTwo并且跟了一个ticket。这时候如果你刷新结果页面报错:未能够识别出目标 'ST-41-2VcnVMguCDWJX5zHaaaD-server.huzd.com'票根
原因是:ticket默认是只能用一次的; 因此两个办法来解决这个问题A.认证后直接重定向;这样url后面不会附带ticket;B.修改ticket有效次数。综合测试我建议使用A。 具体代码修改如下: 文件路径:/WEB-INF/spring-configuration/ticketExpirationPolicies.xml
<!-- 针对方案A 在/WEB-INF/web.xml中添加如下配置-->
<filter>
<filter-name>CAS Validation Filter</filter-name>
<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
......
<init-param>
<param-name>redirectAfterValidation</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Validation Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 针对方案B.修改代码如下 -->
<bean id="serviceTicketExpirationPolicy"
class="org.jasig.cas.ticket.support.MultiTimeUseOrTimeoutExpirationPolicy"
c:numberOfUses="999"
c:timeToKill="${st.timeToKillInSeconds:18000}" c:timeUnit-ref="SECONDS"/>
<!--
c:numberOfUses 表示ticket可以重复使用的次数;改大点可以解决这个问题;但是无法解决客户端1退出后刷新带tikcet的客户端2地址报错问题。
c:timeToKill 表示ticket过期时长
-->
本文由 huzd 创作,采用 知识共享署名4.0 国际许可协议进行许可本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名最后编辑时间
为:
2020/01/22 11:48