单点登录CAS

做项目的过程中涉及单点登录,自己也整理过ppt在小组内分享过,现在把它整理成一篇博文。
单点登录ppt下载地址

简介

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

现在主流的就是CAS这种基于session的单点登录形式。

举个例子:你在xx首页登录一下,下一次访问xx考啦考试系统或xx车辆管理系统的时候就可以免去登录。

回顾下cookie与session

Cookie技术: 会话数据保存在浏览器客户端。
Cookie核心的API:
1. 在服务器端创建Cookie对象
Cookeie cookie = new Cookie("name","value");
2. 把cookie发送给浏览器端(通过响应头:set-cookie)
response.addCookie(cookie);
3. 浏览器带着cookie信息访问服务器(通过请求头:cookie),服务器得到cookie信息
Cookie[] cookies = request.getCookies();
局限:
* 只能保存字符串类型,不能保存中文
* 一个cookie不能超过4kb

Session技术:会话数据保存在服务器端。(内存)
Session核心的API:
1. 创建或得到session对象
HttpSession session = request.getSession(); //创建或得到session对象
上面代码解读:若浏览器第一次访问,服务器会响应一个cookie给浏览器。这个cookie记录的就是sessionId,tomcat生成的sessionid叫做jsessionid。以后每次访问携带着这个sessionId,在服务器里找这个sessionId。找到后就可以获取这个sessionId里面的数据。
2. 会话数据保存session对象中,和得到会话数据
session.setAttribute("name",Object); 保存数据
session.getAttribute("name") 得到数据
注意:
* session.setIntactiveInterval(时间); 设置session过期时间
* session.invalidate() 手动销毁session对象

Cas 结构

CAS分为两部分,CAS Server和CAS Client

CAS Server用来负责用户的认证工作,就像是把第一次登录用户的一个标识存在这里,以便此用户在其他系统登录时验证其需不需要再次登录。
CAS Client就是我们自己的应用,需要接入CAS Server端。当用户访问我们的应用时,首先需要重定向到CAS Server端进行验证,要是原来登陆过,就免去登录,重定向到下游系统,否则进行用户名密码登陆操作。

前期铺底

  • Ticket Granting ticket (TGT) :可以认为是CAS Server根据用户名密码生成的一张票,存在server端
  • Ticket-granting cookie (TGC) :其实就是一个cookie,存放用户身份信息,由server发给client端
  • Service ticket (ST) :由TGT生成的一次性票据,用于验证,只能用一次。相当于server发给client一张票,然后client拿着这是个票再来找server验证,看看是不是server签发的。就像是我给了你一张我的照片,然后你拿照片再来问我,这个照片是不是你。。。没错,就是这么无聊。

Cas 流程

image.png

这是简化Cas 流程图
image.png

这是Cas官方的流程图,简单明了,访问地址如下
https://apereo.github.io/cas/5.2.x/protocol/CAS-Protocol.html

Cas Server 搭建流程

参考博文:https://www.jianshu.com/p/71b0f56e4891

Cas Client

CasClient配置
https://iam.harvard.edu/resources/cas-integration
过滤器相关博文
http://blog.csdn.net/yuwenruli/article/details/6612010

Cas 单点登录案例

https://github.com/coder-huang/sso-shiro-cas

Springboot-shiro-cas

http://blog.csdn.net/catoop/article/details/50534006

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容