CAS单点登录原理简单介绍
1. SSO简介
1.1 单点登录定义
单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统。也就是说只要登录一次单体系统就可以。计划在项目中加入单点登录,开发中,taoshop
1.2 单点登录角色
单点登录一般包括下面三种角色:
①用户(多个);
②认证中心(一个);
③Web应用(多个)。
PS:这里所说的web应用可以理解为SSO Client,认证中心可以说是SSO Server。
2. CAS简介
2.1 CAS简单定义
CAS(Center Authentication Service)是耶鲁大学研究的一款开源的单点登录项目,主要为web项目提供单点登录实现,属于Web SSO。
2.2 CAS体系结构
CAS体系结构分为CAS Server和CAS Client。
PS:图来自官网
2.3 CAS原理
下面给出一张来自CAS官方的图片
CAS登录等系统分为CAS Server和CAS Client,下面,我根据我的理解稍微解释一下:
1、用户访问CAS Client请求资源
2、客户端程序做了重定向,重定向到CAS Server
3、CAS Server会对请求做认证
4、认证通过后会生成一个Ticket返回Cas Client
5、然后Cas Client就带着Ticket再次访问Cas Server,CAS Server进行Ticket验证
6、CAS Server对Ticket进行再次验证,然后通过就返回用户信息,用户拿到信息后就可以登录
看到这个过程,我们大概就能理解CAS是怎么实现的,看起来过程挺多的,不过这些过程都是CAS在后台做的
CAS单点登录
现在博客简单介绍一下,CAS Server简单部署实现,CAS是一款开源框架,目前应用比较广泛。下面简单介绍一下:
cas开源到github上,不过只有几个版本有cas release服务端,其它大部分版本都只有source源码而已,所以其它版本都需要自己编译,不想自己编译的可以下载V4.0.0版本的。
https://github.com/apereo/cas/releases/tag/v4.0.0
下载cas server之后,我们就可以简单部署一下,中间件可以用Tomcat
cas的安全机制是依靠SSL实现的,所以一般的http非安全链接不支持的,虽然是这么说,不过学习练习的话,也可以去掉https要求,下面介绍说一下:
可以先将cas-server-4.0.0-release.zip解压到Tomcat的webapp目录下面,然后需要修改一个配置文件
(1)、先修改一下cas-server-4.0.0-release的WEB-INF下面的deployerConfigContext.xml
修改前:
<!-- Required for proxy ticket mechanism. -->
<bean id="proxyAuthenticationHandler"
class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient" />
修改后,PS:加上p:requireSecure="false"
<bean id="proxyAuthenticationHandler"
class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient" p:requireSecure="false"/></code>
(2)、修改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" />
修改后,PS:改为p:cookieSecure="false"
<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas" />
(3)、修改WEB-INF下面的spring-configuration文件夹下面的warnCookieGenerator.xml
修改前:
<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="true"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas" />
修改后,PS:改为p:cookieSecure="false"
<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas" />
(4)、修改CAS默认登录jsp页面
可以注释WEB-INF\view\jsp\default\ui\casLoginView.jsp页面如下代码
<c:if test="${not pageContext.request.secure}">
<div id="msg" class="errors">
<h2>Non-secure Connection</h2>
<p>You are currently accessing CAS over a non-secure connection. Single Sign On WILL NOT WORK. In order to have single sign on work, you MUST log in over HTTPS.</p>
</div>
</c:if>
去掉Https支持要求后,就可以通过http的链接登录cas server了,用户名是casuser,密码是Mellon
PS:可以在deployerConfigContext.xml里看到配置,正规项目是实现jdbc支持
<bean id="primaryAuthenticationHandler"
class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
<property name="users">
<map>
<entry key="casuser" value="Mellon"/>
</map>
</property>
</bean>
登录成功
待续...,PS:找时间继续写...
附录
PS:参考学习教程
单点登录实现方式:
单点登录的三种实现方式
SpringBoot集成Cas
SpringBoot集成CAS
Spring Boot 集成Shiro和CAS
基于Spring Boot的单点登录
springboot + shiro + cas4.2.7 实战
CAS单点登录教程:
Cas专题文章列表
测试认证方式搭建CAS
SSO之单点登录详细搭建教程
CAS实现SSO单点登录原理
使用 CAS 在 Tomcat 中实现单点登录
CAS单点登录原理简单介绍的更多相关文章
- CAS单点登录原理解析
转自: https://www.cnblogs.com/lihuidu/p/6495247.html 1.基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名 ...
- CAS单点登录原理
转自 https://www.cnblogs.com/lihuidu/p/6495247.html 1.基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密 ...
- CAS单点登录原理解析(转载)
1.基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从 ...
- CAS单点登录原理以及debug跟踪登录流程
CAS 原理和协议 基础模式 基础模式 SSO 访问流程主要有以下步骤: 1. 访问服务: SSO 客户端发送请求访问应用系统提供的服务资源. 2. 定向认证: SSO 客户端会重定向用户请求到 SS ...
- CAS 单点登录原理
访问服务: 浏览器发送请求访问应用系统 定向认证: 应用系统重定向用户请求到 SSO 服务器. 用户认证:用户身份认证. 发放票据: 认证通过后,SSO 服务器会产生一个随机的 Service Tic ...
- CAS实现SSO单点登录原理
1. CAS 简介 1.1. What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...
- cas单点登录 SSO 的实现原理
原文出处: cutesource 欢迎分享原创到伯乐头条 单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户 ...
- CAS实现SSO单点登录原理(转)
1. CAS 简介 1.1. What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...
- 转 CAS实现SSO单点登录原理
原文链接 http://m.blog.csdn.net/hxpjava1/article/details/74019017 CAS 简介 1. 1.1. What is CAS ? CAS ( ...
随机推荐
- python基础之小数据池
一,id,is,== 在Python中,id是什么?id是内存地址,比如你利用id()内置函数去查询一个数据的内存地址: name = '太白' print(id(name)) # 158583128 ...
- python基础之Day24
1.补充内置函数 2.反射 什么是? 通过字符串操作类或者对象的属性 hasattri(a,"b") 判断能否访问到a.b setattri(a,"b",c) ...
- JavaScript基础函数---李老师的
<!DOCTYPE html><html><head> <title>demo2html</title> <meta ch ...
- Asp.Net项目与TCP服务端交互
private void SocketSend(string sendstr) { //将字符串转换成字节数组 Byte[] fsSize = System.Text.Encoding.Default ...
- mysql 外网访问
--修改用户Root 可以外网访问 update user set host='%' where user='root'; --查询修改结果 select user,host from user; - ...
- eclipse 安装 maven
一共需要3个步骤,1 安装maven环境 2 安装eclipse的maven插件 3 配置eclipse的maven环境 1. 安装maven环境 1.1 下载 去网址http:// ...
- xbee3的先进性功能用法
xbee3以及xbee3 PRO 是digi无线模块的又一大突破:不仅实现了所有2.4G的模块整合,更在以后的程序更新中会增加蓝牙功能:它打通了xbee系列1和系列2之间的壁垒:不同于xbee S2C ...
- Java 学习路线图
一.集合 集合类的分类 * (一)List 结构集合类 * ArrayList LinkedList Vector Stack * (二)Map 结构集合类 * HashMap HashTable * ...
- SpringBoot_配置文件
Properties配置 SpringBoot中采用了大量的自动化配置,但是对开发者而言,在实际项目中不可避免会有一些需要自己手动配置,承载这些自定义配置的文件就是resources 目录下的appl ...
- Notes on Distributed System -- Distributed Hash Table Based On Chord
task: 基于Chord实现一个Hash Table 我负责写Node,队友写SuperNode和Client.总体参考paper[Stoica et al., 2001]上的伪代码 FindSuc ...