CAS4.0 + tomcat 学习记录

环境


CAS官网 https://www.apereo.org/cas

服务器端下载地址: https://www.apereo.org/cas/download

客户端下载地址:http://downloads.jasig.org/cas-clients/

先说一下我的环境,Server 和Client 都是在Windows下配置的,Linux应该也差不多。

服务端版本:CAS Server 4.0.0 Release  客户端版本 :cas-client-3.2.1-release.zip

都是使用Tomcat配置的。


    才开始的时候在按照百度搜索的 http://www.th7.cn/Program/java/201409/281561.shtml 配置的,由于网络限制访问Server端口比较少,就把https去掉了。省去了证书的部分。修改了服务器的两个文件,就可以了。


不采用https验证,服务器端需要配置

 修改第一处:

 cas/WEB-INF/deployerConfigContext.xml

<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient"/>

 

 增加参数p:requireSecure="false",是否需要安全验证,即HTTPS,false为不采用。修改后为:

  <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
 p:httpClient-ref="httpClient"  p:requireSecure="false"/>



  修改第二处:

  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就行了



感觉服务器端配置没什么难度,配置一次就通过了,主要就是数据库配置的时候略显复杂了一下。


而且中间换了一次Tomcat,直接拷贝webapp下的项目就可以了,迁移还是非常方便的。

感觉难点在client,网上说的配置不是很全,饶了一个弯,最后还是在官网的文档中找到的解决方案。


配置过程中遇到的问题

org.jasig.cas.client.authentication.AuthenticationFilter配置中

必填参数

  • casServerLoginUrl - Defines the location of the CAS server login URL, i.e. https://localhost:8443/cas/login

  • service or serverName

    • service - the service URL to send to the CAS server,e.g. https://localhost:8443/yourwebapp/index.html

    • serverName - the server name of the server this application is hosted on. Service URL will be dynamically constructed using this, i.e.https://localhost:8443 (you must include the protocol, but port is optional if it's a standard port).

service和serverName两个参数二选其一,刚刚开始的时候我填写的http://localhost:8088,后来发现该页面是登录页面,用户需要再登录一下,然后自己编写了根据用户名登录的页面,userLogin.jsp。
然后将serverName配置成http://localhost:8088/userLogin.jsp,但是发现登录之后提示404,这是chrome提示的错误,而IE浏览器直接就是卡在SSO的登录页面,坑人。。
然后仔细查看地址发现单点登录成功之后跳转的地址为:http://localhost:8088/userLogin.jsp/,与正确的地址多了一个斜线,百度了一下,发现有一个noFilter的参数,在web.xml文件中配置该参数之后不生效,依旧不生效,没办法了,看源码,查过源码之后确定确实没有改参数,这个应该是旧版本的问题,最后只能求助官网的文档了,发现不光可以配置serverName,还可以将serverName替换成service,按照官方的文档将serverName换成service,值还是原来的值,一切就OK了。


你可能感兴趣的:(cas4.0)