初步认识————存贮票据和查验票据

单点登录形象对比

CAS特点及认证流程

开源的企业级单点 登录解决方案

需要单独配置CAS server,各个模块都是其客户端

认证流程
  • 1. 访问服务:SSO客户端发送请求访问应用系统提供的服务资源。
  • 2. 定向认证:SSO客户端会重定向用户请求到SSO服务器。
  • 3. 用户认证:用户身份认证。
  • 4. 发放票据:SSO服务器会产生一个随机的ServiceTicket。
  • 5. 验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务。
  • 6. 传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端。

CAS服务配置

去除https认证

CAS默认使用的是HTTPS协议,如果使用HTTPS协议需要SSL安全证书(需向特定的机构申请和购买) 。如果对安全要求不高或是在开发测试阶段,可使用HTTP协议。我们这里讲解通过修改配置,让CAS使用HTTP协议

(1)修改cas的WEB-INF/deployerConfigContext.xml

<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"

p:httpClient-ref="httpClient"/>

(2)修改cas的/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml

找到下面配置

<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"p:cookieSecure="true"——————此处改为false,表示启动httpp:cookieMaxAge="3600"——————设置失效时间p:cookieName="CASTGC"p:cookiePath="/cas" />

参数p:cookieSecure="true",同理为HTTPS验证相关,TRUE为采用HTTPS验证,FALSE为不采用https验证。

参数p:cookieMaxAge="-1",是COOKIE的最大生命周期,-1为无生命周期,即只在当前打开的窗口有效,关闭或重新打开其它窗口,仍会要求验证。可以根据需要修改为大于0的数字,比如3600等,意思是在3600秒内,打开任意窗口,都不需要验证。

我们这里将cookieSecure改为false , cookieMaxAge 改为3600。


测试

1.引入demo依赖

<dependencies><!-- cas --> <dependency> <groupId>org.jasig.cas.client</groupId> <artifactId>cas-client-core</artifactId> <version>3.3.3</version> </dependency>       <dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version> <scope>provided</scope></dependency></dependencies> <build> <plugins><plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><configuration><!-- 指定端口--><port>9001</port><!-- 请求路径--><path>/</path></configuration></plugin></plugins> </build>

2.配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="Java EE: XML Schemas for Java EE Deployment Descriptors"xsi:schemaLocation="Java EE: XML Schemas for Java EE Deployment Descriptors http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5"> <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 -->  <listener>  <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>  </listener>  <!-- 该过滤器用于实现单点登出功能,可选配置。 -->  <filter>  <filter-name>CAS Single Sign Out Filter</filter-name>  <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>  </filter>  <filter-mapping>  <filter-name>CAS Single Sign Out Filter</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping>  <!-- 该过滤器负责用户的认证工作,必须启用它 -->  <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://localhost:8080/cas/login</param-value>  <!--这里的server是服务端的IP -->  </init-param>  <init-param>  <param-name>serverName</param-name>  <param-value>http://localhost:9001</param-value></init-param>  </filter>  <filter-mapping>  <filter-name>CASFilter</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping>  <!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->  <filter>  <filter-name>CAS Validation Filter</filter-name>  <filter-class>     org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>  <!--过滤后交给cas进行验证,需要配置cas地址-->
<init-param>  <param-name>casServerUrlPrefix</param-name>  <param-value>http://localhost:8080/cas</param-value>  </init-param>
<!--当前应用的根地址,登录之后要跳转的服务的地址--><init-param>  <param-name>serverName</param-name>  <param-value>http://localhost:9001</param-value></init-param>  </filter>  <filter-mapping>  <filter-name>CAS Validation Filter</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping>  <!-- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 -->  <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>  <!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 -->  <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>
</web-app>

3.单点登出

%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>cas demo1</title>
</head>
<body>
<h1>欢迎来到一</h1><%=request.getRemoteUser()%>
<a href="http://192.168.85.113:8080/cas/logout">退出登录</a></body>
</html>

但我们更希望退出登录后,能自动跳转到某个页面,那如何处理呢?

修改cas系统的配置文件cas-servlet.xml

<bean id="logoutAction" class="org.jasig.cas.web.flow.LogoutAction"p:servicesManager-ref="servicesManager"p:followServiceRedirects="${cas.logout.followServiceRedirects:true}"/>

4。数据源配置

用户名密码从我们的数据库表里做验证

1)修改cas服务端中web-inf下deployerConfigContext.xml ,添加如下配置

配置数据库
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  p:driverClass="com.mysql.jdbc.Driver"  p:jdbcUrl="jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8"  p:user="root"  p:password="root" /> 配置加密方式
<bean id="passwordEncoder"
class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"  c:encodingAlgorithm="MD5"  p:characterEncoding="UTF-8" />  配置处理器,引用数据库连接池和加密方式
<bean id="dbAuthHandler"  class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"  p:dataSource-ref="dataSource"  p:sql="select password from user where username = ?"  p:passwordEncoder-ref="passwordEncoder"/>  

单点登录 cas 设置回调地址_单点登录————CAS相关推荐

  1. 单点登录 cas 设置回调地址_单点登录(SSO)看这一篇就够了

    背景 在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登录,很方便. 但随着企业的发展,用到的系统随之增多,运营人员在操作不同的系统时,需要多 ...

  2. 单点登录 cas 设置回调地址_单点登录落地实现技术有哪些,有哪些流行的登录方案搭配?...

    实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效 性,因此要点也就以下两个:1.存储信任 :2.服务器生产~验证信任 : 3.拿到服务器再次验证. 单点登录的常 ...

  3. 单点登录 cas 设置回调地址_cas客户端流程详解(源码解析)单点登录

    博主之前一直使用了cas客户端进行用户的单点登录操作,决定进行源码分析来看cas的整个流程,以便以后出现了问题还不知道是什么原因导致的 cas主要的形式就是通过过滤器的形式来实现的,来,贴上示例配置: ...

  4. 笔记本java设置ip地址_如何设置苹果笔记本IP地址

    在相对于很少使用苹果笔记本的用户来说设置IP地址可能是个难题,下面我将介绍如何设置苹果笔记本IP地址. 1.单击桌面右上角的无线图标,无线网卡自动搜索环境中的无线网络,如下图所示. 2.点击" ...

  5. cas返回mysql数据_单点登录 CAS 5.* - 从数据库获取用户信息 - 4

    前面演示的项目 都是使用的固定用户,现在,可以尝试从数据库获取用户+密码尝试登录, 创建表和数据: CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_I ...

  6. Spring Security 入门(3-11)Spring Security 的使用-自定义登录验证和回调地址

    配置文件 security-ns.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmln ...

  7. 微信app支付统一下单设置回调地址php,微信支付配置回调地址

    需要超级管理员帐号登录才可操作 1) 所有使用公众号支付方式发起支付请求的链接地址,都必须在支付授权目录之下: 2) 支付授权目录最多可以设置5个目录 3) 头部要包含http或https,须细化到二 ...

  8. 4g网络设置dns地址_黑群晖nas中tr软件汉化、路由器设置端口转发教程(二)

    一.安装增强汉化web作者最近又更新了,推荐[通过群晖的"任务计划"自动安装及定期自动更新]这个方式安装,更方便,还能自动更新见作者:下载地址见留言,或私信 官方功能介绍:在线查看 ...

  9. uboot 如何设置网关地址_两种网络地址段,如何设置内网和外网一起上?

    一般企业都会有自己内部专用业务网络.及对外的互联业务两个网络,在具体使用过程中,根据业务类型的不同.部门职能的不同而分开使用两种网络. 但在使用过程中总会有特殊情况,就是一台电脑要同时使用两种业务网络 ...

  10. 4g网络设置dns地址_上网速度慢,修改一下win10系统的DNS设置,网速飙升

    无论何时申请上网服务,互联网服务提供商(ISP)都会提供所需的网络设置(包括域名系统(DNS)地址),用户可以使用这些设置来加载喜欢的网站.访问在线服务以及下载文件.但是,它们的DNS服务器往往速度较 ...

最新文章

  1. 均衡教派服务器维护,LOL十大最坑大区盘点 LOL最坑服务器 均衡教派坐实榜首
  2. UVA 10269 Super Mario,最短路+动态规划
  3. mysql 事实表 维度表_数据库的事实表与维度表
  4. 项目宝提供的服务器,开源WebSocket服务器项目宝贝鱼CshBBrain V4.0.1 和 V2.0.2发布
  5. Unity3D之如何创建正确的像素比在屏幕上
  6. TextureUnpacker 分割 Texturepacker 产生的图片 支持windows 和 mac
  7. 计算机组成原理—Cache主存块中的替换算法
  8. 标准工时分析怎么做?精益生产下的VIOOVI 标准工时分析软件
  9. Universal Radio Hacker(URH):一个用于逆向解析和攻击无线通信协议的开源工具
  10. stm32连接热敏打印机
  11. 一份Slide两张表格带你快速了解目标检测
  12. 在微型计算机中ega,在微机系统中,常有VGA、EGA等说法,它们的含义是什么
  13. 做管理,“重人情”还是“重制度”?
  14. C++弹窗拦截程序,弹窗广告怎么关闭?不用问,我教你怎么屏蔽!
  15. 数学建模学习(41):单因素方差分析
  16. 最全最新的的Java核心知识点整理!!! 【推荐】
  17. android 市场 历史版本,安卓市场旧版本
  18. 自己实现notifyDatasetChanged
  19. java.sql.SQLException: 无效的列类型: 1111 报错问题解决
  20. 响应式网站-- css媒体查询 字体大小

热门文章

  1. 点分十进制表示的字符串转换为 unsigned int 整型数值
  2. 《ShowYou数组代码》第38题:对数组元素进行排序
  3. rtsp、rtmp测试地址
  4. java builder_带继承的Java Builder模式
  5. 100道接口测试面试题收好了!【建议收藏】
  6. 20个必不可少的Python第三方库(存干货分享)!
  7. Win7上USB转串口芯片ch341驱动安装方法
  8. 格签名困难假设: 最短向量问题SVP
  9. 实验11 B样条曲面生成
  10. 如何在程序中调用Bartender软件打印文件模板