SpringBoot集成CAS单点登录,SSO单点登录,CAS单点登录(视频资料分享篇)_springboot集成cas sso-程序员宅基地

技术标签: CAS登录  CAS  SSO单点登录  单点登录  SpringBoot  SSO  

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

很早期的公司,一家公司可能只有一个Server,慢慢的Server开始变多了。每个Server都要进行注册登录,退出的时候又要一个个退出。用户体验很不好!你可以想象一下,上豆瓣 要登录豆瓣FM、豆瓣读书、豆瓣电影、豆瓣日记......真的会让人崩溃的。我们想要另一种登录体验:一家企业下的服务只要一次注册,登录的时候只要一次登录,退出的时候只要一次退出。怎么做?

一次注册。 一次注册不难,想一下是不是只要Server之间同步用户信息就行了?可以,但这样描述不太完整,后续讲用户注册的时候详细说。实际上用户信息的管理才是SSO真正的难点,只是作为初学者,我们的难点在于实现SSO的技术!我们先讨论实现手段。

一次登录与一次退出。 回头看看普通商场的故事,什么东西才是保持登录状态关键的东西?记录器(session)?那种叫做cookie的纸张?写在纸张上的ID? 是session里面记录的信息跟那个ID,cookie不只是记录ID的工具而已。客户端持有ID,服务端持有session,两者一起用来保持登录状态。客户端需要用ID来作为凭证,而服务端需要用session来验证ID的有效性(ID可能过期、可能根本就是伪造的找不到对于的信息、ID下对应的客户端还没有进行登录验证等)。但是session这东西一开始是每个server自己独有的,豆瓣FM有自己的session、豆瓣读书有自己的session,而记录ID的cookie又是不能跨域的。所以,我们要实现一次登录一次退出,只需要想办法让各个server的共用一个session的信息,让客户端在各个域名下都能持有这个ID就好了。再进一步讲,只要各个server拿到同一个ID,都能有办法检验出ID的有效性、并且能得到ID对应的用户信息就行了,也就是能检验ID。

server端

以server群如何生成、验证ID的方式大致分为两种:

  • “共享Cookie”这个就是上面提到的共享session的方式,我倒觉得叫“共享session”来得好一点,本质上cookie只是存储session-id的介质,session-id也可以放在每一次请求的url里。据说这种方式不安全,我没去细究,哪位大神可以推荐下相关的资料,我后期补上。其实也是,毕竟session这项机制一开始就是一个server一个session的,把session拿出来让所有server共享确实有点奇怪。

  • SSO-Token方式因为共享session的方式不安全,所以我们不再以session-id作为身份的标识。我们另外生成一种标识,把它取名SSO-Token(或Ticket),这种标识是整个server群唯一的,并且所有server群都能验证这个token,同时能拿到token背后代表的用户的信息。我们要讨论的也是这种方式,一会上具体流程图。

浏览器端

单点登录还有非常关键的一步,这一步跟server端验证token的方式无关,用最早的“共享session”的方式还是现在的“token”方式,身份标识到了浏览器端都要面临这样的一个问题:用户登录成功拿到token(或者是session-id)后怎么让浏览器存储和分享到其它域名下?同域名很简单,把token存在cookie里,把cookie的路径设置成顶级域名下,这样所有子域都能读取cookie中的token。这就是共享cookie的方式(这才叫共享Cookie嘛,上面那个应该叫共享session)。比如:谷歌公司,google.com是他的顶级域名,邮箱服务的mail.google.com和地图服务的map.google.com都是它的子域。但是,跨域的时候怎么办?谷歌公司还有一个域名,youtube.com,提供视频服务 。

SSO的优点有如下:

1、提高用户的效率。

用户不再被多次登录困扰,也不需要记住多个 ID 和密码。另外,用户忘记密码并求助于支持人员的情况也会减少。

2、提高开发人员的效率。

SSO 为开发人员提供了一个通用的身份验证框架。实际上,如果 SSO 机制是独立的,那么开发人员就完全不需要为身份验证操心。他们可以假设,只要对应用程序的请求附带一个用户名,身份验证就已经完成了。

3、简化管理。

如果应用程序加入了单点登录协议,管理用户帐号的负担就会减轻。简化的程度取决于应用程序,因为 SSO 只处理身份验证。所以,应用程序可能仍然需要设置用户的属性(比如访问特权)。


下面用一张图来说明CAS的登录流程:

 

 

按照上图,用户登录后Authtoken保存在Cookie中。 domian= test. com ,浏览器会将domain设置成 .test.com,这样访问所有*.test.com的web站点,都会将Authtoken携带到服务器端。然后通过SSO服务,完成对用户状态的校验/用户登录信息的获取

 

  • 登出

  • 跨域登出

 

以上就是CAS大致的一个介绍和流程,CAS学起来也比较复杂,网上的资料不是很多,都很简单。如果想要深入学习的话就不容易了。

以下是本人整理的比较全面的CAS视频。

如果需要的话可以加我QQ:466682881

学习QQ群:213365178

以上的部分内容来自网络,如果有侵权立马删除。有问题可以在下面评论,技术问题可以私聊我。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_24434671/article/details/89488781

智能推荐

sqli-labs靶场第二十二关_sqlilabs第22-程序员宅基地

文章浏览阅读418次。第二十二关cookie编码注入!当我使用")编码后放入cookie中去请求发现报错了!说明很可能是")闭合的没注入成功,试一下 " , ’ , ‘)这几种情况吧 或不输入单引号和双引号把爱" and extractvalue(1,concat(’^’,(select database()),’^’)) --+ 注入失败" and extractvalue(1,concat(’^’,(select database()),’^’)) # 注入成功这里发现一个问题,在cookie注入时,使用–_sqlilabs第22

一次APM32替换STM32的经历分享_amp32-程序员宅基地

文章浏览阅读1.6w次,点赞55次,收藏101次。系列文章目录这几年相信大家知道STM32系列的芯片价格翻倍的涨,自己玩都快玩不起了,要是用于生产,这得多掏多少钱!所以现在大家都选择了国产芯片,哈哈不能说多差吧!价格你没得说。 这是我的一次APM32代替STM32的经历,你是不是也会遇到这样的坑呢?文章目录系列文章目录一、开始替换(流程)1.首先第一步找一个简单的工程,保证没有错误。警告没问题。2.寻找APM32芯片替换STM32芯片3.修改错误4.重点来了二、测试方法与结果1.测试2. SPI怎么测?总结一、开始替换(流程)&g_amp32

java中的进制转换及转换函数_java将八进制转五进制函数-程序员宅基地

文章浏览阅读4.4k次,点赞4次,收藏21次。Java的进制转换 进制转换原理 十进制 转二进制: 原理: 对十进制数进行除2 运算取余。 6 --> 110 二进制 转十进制 原理: 二进制 乘以 2 的n次幂 的过程 110 ->0*20 + 1*21 + 1 * 22 0 + 2 + 4=6 _java将八进制转五进制函数

Effective Java学习笔记--2017年5月_但构造完毕时,我们可以通过手工冻结对象-程序员宅基地

文章浏览阅读1.1k次。作为自己在大四最后一年时间学习书籍中的一本,EffectiveJava通过一周时间的完整阅读,根据自身的条件记录下重点,供自身以后学习参考借鉴_但构造完毕时,我们可以通过手工冻结对象

IOS:简单说一下MVVM与MVC的优缺点和使用_ios mvc和mvvm优缺点-程序员宅基地

文章浏览阅读2.2k次。MVC :M是数据模型V是视图C是控制器Model和View是相互独立的。View只负责页面展示,Model只是数据的存储,那么也就达到了解耦和重用的目的。MVVM的优点:方便测试 便于代码的移植兼容MVC,缺点:类会增多,viewModel会越来越庞大,调用复杂度增加MVVM什么时候使用:mvvm其实是mvc的变种而已。mvvm只是帮mvc中controller做瘦身,就是把一些逻辑代码和_ios mvc和mvvm优缺点

在Java中轻松将HTML格式文本转换为纯文本(保留换行)_把html代码转换成java string格式,遇到换行加上\n-程序员宅基地

文章浏览阅读1.3w次。第一步:引入lang和lang3的依赖:这两个包里有转换所需的工具类<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version></dependen..._把html代码转换成java string格式,遇到换行加上\n

随便推点

PostgreSQL数据库_pg数据库-程序员宅基地

文章浏览阅读1.4w次,点赞16次,收藏133次。PostgreSQL是一个免费的对象·关系型数据库服务器(ORDBMS),在灵活的BSD许可证下发行。PostgreSQL开发者把它念作post-gress-Q-L。PostgreSQL的Slogan是“世界上最先进的开源关系型数据库”。“开源界的Oracle”,去O首选。PostgreSQL官网:PosetgreSQL中文社区:全球数据库排行:国产数据库排行:命令说明\password设置当前密码\q退出\h查看sql命令的解释,如\h select?_pg数据库

java(十)【属性集,缓冲流、转换流、序列化流】_put(buffer,offset:0,len)-程序员宅基地

文章浏览阅读353次。day10【缓冲流、转换流、序列化流】今日目标IO资源的处理。finnally释放资源jdk 1.7开始的新技术 try-with-resources缓冲流提高字节流和字符流读写数据的性能的。转换流可以解决不同编码读取乱码的问题。序列化可以实现把Java对象存储到文件中去。打印流可以方便的写数据出去,支持写任意类型的数据到文件中去,非常方便和简单以及强大。属性集是一种Map集合。教学目标能够使用字节输入流读取数据到程序Input_put(buffer,offset:0,len)

《Three.js 开发指南》源码示例说明以及在线demo(原书第二版)附第三版的代码下载_threejs开发指南第三版 pdf-程序员宅基地

文章浏览阅读3.9k次,点赞4次,收藏33次。1. 用Three.js创建你的第一个三维场景1.1 具有所有基本元素的hello world示例src/chapter-01/06-screen-size-change.html2. 使用构建Three.js场景的基本组件2.1 添加、删除、枚举、通过名字获取场景中的对象src/chapter-02/01-basic-scene.html2.2 雾化效果src/chapter-02..._threejs开发指南第三版 pdf

开发语言的选择_开发语言应首选-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏2次。在软件这个行业里,怕是没有任何一个其话题域像开发语言这样引起争议了。对开发语言是非的争论,不单旷日持久,且深度亦是与时俱进。实现要强调下的是,在这里我们要专注的是开发语言的选择而非开发语言的优劣。从不同的视角对开发语言进行选择,其结论可能大相径庭。从项目的角度看,语言自身特性的多少,强弱往往并不成为一个关键选择因素。好比说某语言支持多重继承,而某语言不支持多重继承,但对大多项目而言多重继承这一语言_开发语言应首选

clickhouse(十二、踩坑之路)_attempt to read after eof: cannot parse int32 from-程序员宅基地

文章浏览阅读2.1w次,点赞11次,收藏36次。Q1DB::Exception: Cannot create table from metadata file /data/clickhouse/metadata/default/dwd_test.sql, error: DB::Exception: The local set of parts of table default.dwd_test doesn’t look like the set of parts in ZooKeeper: 65.88 million rows of 85.04 mi._attempt to read after eof: cannot parse int32 from string, because value is

python基础教程-数字与表达式——浮点数_python表达浮点数的两种方式-程序员宅基地

文章浏览阅读621次。1、python的加减乘数与计算机的加减乘除几乎差不多 + - * /2、如果参数除法中有一个为浮点数结果 亦为浮点数 >>> 1.0 / 2.0 0.5 >>> 1/2.0 0.53 、 双斜线 // 实现整除的操作符 >>> 1.0 // 2.0 0.0 >>> 1 // _python表达浮点数的两种方式

推荐文章

热门文章

相关标签