1. 下载jar包
    因为cas的源码修改变动很大,所以客户端引入的jar包根据服务端的war包而定。之前搭建的cas服务端用的版本是3.5.2,经过测试,可以使用cas-client-core的3.2.1版本。使用maven添加依赖

     <!-- https://mvnrepository.com/artifact/org.jasig.cas.client/cas-client-core -->
    <dependency>
    <groupId>org.jasig.cas.client</groupId>
    <artifactId>cas-client-core</artifactId>
    <version>3.2.1</version>
    </dependency>

    不用maven的话可以用上面的地址去手动下载jar包。

  2. web.xml配置
    引入jar包后,只要在客户端的web.xml里配置相应的过滤器即可。根据添加的过滤器的位置顺序一一介绍:

    2.1 Cas20ProxyReceivingTicketValidationFilter(必需)
      该过滤器负责对ticket的校验工作,这个过滤器要放在第一个位置。casServerUrlPrefix:cas服务器访问地址,serverName:客户端域名和端口。这里也可以配置成ip,但是最好还是配置成域名。
      还有就是cas服务端我取消了https,这里路径注意一下。

       <!-- 该过滤器配置负责对Ticket的校验工作-->
    <filter>
    <filter-name>CAS Validation Filter</filter-name>
    <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
    <init-param>
    <param-name>casServerUrlPrefix</param-name>
    <param-value>http://www.mycas.com:8088/cas-server-webapp-3.5.2</param-value>
    </init-param>
    <init-param>
    <param-name>serverName</param-name>
    <param-value>http://127.0.0.1:80/</param-value>
    </init-param>
    <init-param>
    <param-name>renew</param-name>
    <param-value>false</param-value>
    </init-param>
    <init-param>
    <param-name>gateway</param-name>
    <param-value>false</param-value>
    </init-param>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>CAS Validation Filter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    2.2 AuthenticationFilter(必需)
      该过滤器负责用户的认证工作,casServerLoginUrl:cas服务端登录地址(注意这里比上面的多了'/login'),serverName:同上

       <!--该过滤器负责用户的认证工作-->
    <filter>
    <filter-name>CASFilter</filter-name>
    <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
    <init-param>
    <param-name>casServerLoginUrl</param-name>
    <param-value>http://www.mycas.com:8088/cas-server-webapp-3.5.2/login</param-value>
    </init-param>
    <init-param>
    <param-name>serverName</param-name>
    <param-value>http://127.0.0.1:80/</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>CASFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    2.3 HttpServletRequestWrapperFilter (可选)与 AssertionThreadLocalFilter(可选)

     <!--HttpServletRequestWrapperFilter-->
    <filter>
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
    <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping> <!--AssertionThreadLocalFilter-->
    <filter>
    <filter-name>CAS Assertion Thread Local Filter</filter-name>
    <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>CAS Assertion Thread Local Filter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    这2个过滤器的功能是一样的,所以放到一起来讲,当我们登录成功后,需要获取登录的用户信息(只能获取到用户名),就需要配置上面2个过滤器的其中一个。获取方式如下:
    HttpServletRequestWrapperFilter :

     HttpServletRequest request2 = (HttpServletRequest) request;
    // 从Cas服务器获取登录账户的用户名(2种方式)
    String username1 = request2.getUserPrincipal().toString();
    String username2 = request2.getRemoteUser();

    AssertionThreadLocalFilter:

     Assertion assertion = AssertionHolder.getAssertion();
    String username3 = assertion.getPrincipal().getName();
  3. 到这里客户端的配置就完成了~~

最新文章

  1. Cesium原理篇:6 Renderer模块(2: Texture)
  2. 66. 有序数组构造二叉搜索树[array to binary search tree]
  3. oracle中merge的详解
  4. android之费电检查 BetterBatteryStats
  5. Python对象(译)
  6. How to: cgminer (Bitcoin, Litecoin etc.) + AMD Radeon driver install on CentOS
  7. ubuntu12.04管理员账户登录不了桌面,只能客人会话登录
  8. css属性之appearance
  9. Java里的日期和时间学习
  10. Omi教程-组件通讯
  11. python 中 reduce 函数的使用
  12. Jeff Atwood:Google的头号UI问题
  13. elk之查询方式(4种)
  14. JEECG 上传插件升级-代码生成器
  15. bzoj1002/luogu2144 轮状病毒 (dp)
  16. 通达OA批量处理没有结束但前台显示已经结束的流程
  17. Unsafe 学习和源码阅读
  18. Apache Maven 打包可执行jar
  19. day39 css
  20. pringboot+mybatis+redis+cookie单点登录

热门文章

  1. 17 nginx连接memcached
  2. oracle索引INdex
  3. 多文档自己主动文摘:Multi-Document Summarization,MDS
  4. smarty模板里实现缓存。
  5. 远程访问(post 传参数) 以及IOUtils复制文件
  6. Chrome 的滚动条修改.
  7. AWS:4.VPC
  8. 如果这种方式导致程序明显变慢或者引起其他问题,我们要重新思考来通过 goroutines 和 channels 来解决问题
  9. Eclipse javax.servlet.jsp.PageContext cannot be resolved to a type 错误解决办法
  10. HTML5_CSS3仿Google Play垂直菜单