java cas client 客户端详解

原创 2018年04月16日 16:30:57

基础框架

1.spring mvc:spring核心容器

2.maven:项目管理工具

3.cas client:java cas client客户端

4.spring session:缓存框架

基本流程

1.项目中添加maven依赖:

<!--java cas client-->
<dependency>
    <groupId>org.jasig.cas.client</groupId>
    <artifactId>cas-client-core</artifactId>
    <version>3.4.1</version>
</dependency>
<!-- spring-session-data-redis -->
<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
    <version>1.3.1.RELEASE</version>

</dependency>

2.webapp/web.xml配置:

<!--注意需要放在最前面,防止生成两个sessionid-->
<!--spring session redis share start-->
<filter>
    <filter-name>springSessionRepositoryFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSessionRepositoryFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

<!--spring session redis share end-->

<!-- Filter to handle logout requests sent directly by the CAS server -->
<!-- #放在所有过滤器之前 -->
<filter>
    <filter-name>CAS Single Sign Out Filter</filter-name>
    <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
    <init-param>
        <param-name>casServerUrlPrefix</param-name>
        <!--这里配置cas服务器的url地址-->
        <param-value>https://localhost/cas</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CAS Single Sign Out Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>

<!--cas配置 start-->
<!-- Define the protected urls of your application -->
<!-- #### change with your own CAS server and your host name #### -->
<filter>
    <filter-name>CAS Authentication Filter</filter-name>
    <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
    <init-param>
        <param-name>casServerLoginUrl</param-name>
        <param-value>https://localhost/cas/login</param-value>
    </init-param>
    <init-param>
        <param-name>service</param-name>
        <param-value>http://localhost/test/login</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CAS Authentication Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Define the urls on which you can validate a service ticket -->
<!-- #### change with your own CAS server and your host name #### -->
<filter>
    <filter-name>CAS Validation Filter</filter-name>
    <filter-class>org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter</filter-class>
    <init-param>
        <param-name>casServerUrlPrefix</param-name>
        <param-value>https://localhost/cas</param-value>
    </init-param>
    <init-param>
        <param-name>service</param-name>
        <param-value>http://localhost/test/login</param-value>
    </init-param>
<!--        <init-param>
        <param-name>proxyGrantingTicketStorageClass</param-name>
        <param-value>org.jasig.cas.client.proxy.EhcacheBackedProxyGrantingTicketStorageImpl</param-value>
    </init-param>-->
    <init-param>
        <param-name>redirectAfterValidation</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>useSession</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>
<!-- Put the CAS principal in the HTTP request -->
<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>

3.配置spring-session-redis配置,将session缓存到redis中进行配置

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/util
           http://www.springframework.org/schema/util/spring-util.xsd"
       default-lazy-init="true">
<bean id="redisHttpSessionConfiguration" class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">
        <!--表示超时时间,默认是1800秒。写上述配置的时候我个人习惯采用xml来定义,官方文档中有采用注解来声明一个配置类。-->
        <!--<property name="maxInactiveIntervalInSeconds" value="600"/>-->
    </bean>
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:config/config.properties"/>
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
    </bean>
    <!-- Jedis连接池-->
    <bean id="jedisConnFactory"
          class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
          p:hostName="${redis_host}"
          p:port="${redis_port}"
          p:password=""
          p:use-pool="true"
          p:poolConfig-ref="jedisPoolConfig"/>
    <bean id="jedisPoolConfig"
          class="redis.clients.jedis.JedisPoolConfig"
          p:maxTotal="500"
          p:maxIdle="100"
          p:maxWaitMillis="5000"
          p:testOnBorrow="false"
          p:testOnReturn="false"/>
    <!--禁用redis config命令,否则tomcat启动报错-->
    <util:constant
            static-field="org.springframework.session.data.redis.config.ConfigureRedisAction.NO_OP"/>

</beans>

4.回调url中:http://localhost/test/login,可以获取cas server返回的用户信息,自己实现需要的业务逻辑。

5.统一注销和登陆,例如:test项目请求cas server,需要在cas server配置回调注销url,删除用户的登陆信息统一进行注销,cas client会统一注销掉当前用户所有登陆的系统,url地址需要cas server来提供,例如:https://localhost/cas/logout

6.可以参考:https://github.com/pac4j/pac4j

JAVA报表开发JasperReport+iReport5.6详解

课程包含从基础的环境搭建,到控件的详细使用和对ireport难点进行重点讲解,一共21个小节。 难点包含: 条件styles Crosstab交叉表格 报表分组和统计 Subreport子报表(参数传递,子报表返回值) chart图表类所有控件 jasperreport导出word,excel,pdf 多数据源报表 JSP中显示jasperreport报表等
  • 2016年10月31日 14:14

cas client入门之二:web.xml 配置

cas 分为服务端,与客户端,那么客伊妹儿
  • zhurhyme
  • zhurhyme
  • 2014-06-08 09:18:28
  • 8720

cas client入门之一:cas client分类

cas client有多种语言实现,cas client主要分为以下几种: 1.官方客户端 主要实现有java client,.net client,php client等 2.遗留的客户端 ...
  • zhurhyme
  • zhurhyme
  • 2014-06-02 15:27:24
  • 4677

sso-cas全攻略(java版)------部署cas client端应用

cas server端部署起来以后,如果能正常登陆,client端就相对容易多了,直接把cas client端的程序包(版本3.1.1)拷至/lib目录下,或者你需要修改,加自己的程序逻辑的话,直接用...
  • yaoweijq
  • yaoweijq
  • 2010-11-11 17:18:00
  • 3986

1、[置顶] CAS单点登录源码解析之【客户端】

版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[-] 前期准备AuthenticationFilterTicketValidationFilterInitLo...
  • jingqiang521
  • jingqiang521
  • 2016-01-23 17:36:09
  • 2604

CAS服务端,JAVA客户端,PHP客户端配置

1.CAS服务端 点击进入CAS服务端下载  1.1解压cas-server-3.5.2-release.zip将modules目录下的cas-server-webapp-3.5.2.war改名称...
  • jinangchao3
  • jinangchao3
  • 2014-04-18 17:14:48
  • 2443

CAS单点登录-客户端集成(cas-client)(九)

CAS单点登录-cas-client(九) 当我们把单点系统搭建好了,或者客户已经提供好了单点登录服务,往往会想,如何集成cas、如何能在业务系统上用cas(本章只讲cas协议,oauth2、SAML...
  • u010475041
  • u010475041
  • 2017-09-26 13:32:27
  • 3012

2、cas4.0 单点登录 之 cas-client

cas4.0 单点登录 之 cas-client 单点登录测试,使用web.xml配置方式及spring boot方式配置...
  • zrk1000
  • zrk1000
  • 2016-04-16 22:51:25
  • 6679

单点登录(八)cas支持客户端登录——客户端

客户端即指使用CAS中央认证服务器的应用程序,而不是指用户浏览器 客户端实现目标 客户端实现主要需要满足5个case: ·          1. 用户未在中央认证服务器登陆,访问客户端受保护资源...
  • u010602695
  • u010602695
  • 2013-09-27 10:13:10
  • 2372

cas client 3.2.1 环境搭建

接着上一节内容继续搭建客户端,搭建客户端新建一个web project ,需要的包,我截图上来吧,我是结合spring+hibernate 注解配置 如果不配置 spring hiberna...
  • dongdong_java
  • dongdong_java
  • 2014-02-28 09:26:45
  • 9971
收藏助手
不良信息举报
您举报文章:java cas client 客户端详解
举报原因:
原因补充:

(最多只允许输入30个字)