博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CAS cas单点登入和认证流程
阅读量:6293 次
发布时间:2019-06-22

本文共 987 字,大约阅读时间需要 3 分钟。

hot3.png

1. 单点是如何实现分布式系统共享用户信息

用一个单独服务器来存储用户信息,所有的分布式子系统都从单独服务器来获取用户信息

2. CAS实现原理

例如:

  • cas服务的地址:localhost:9100
  • demo1的地址:localhost:9002
  • demo2的地址:localhost:9003

流程&原理:

2.1 登陆流程

(1) 访问demo1: (当前浏览器并没有登陆过)

(2) 由于当前浏览器没有登陆过,那么就重定向到CAS,并且携带一个service参数[登陆成功之后要重定向回来地址]

cas就跳转到登陆页面

(3) 在cas登陆页面输入用户名和密码,点击登陆就会携带用户和密码并发送

如果cas校验用户名和密码,成功则重定向回service参数所指向的地址demo1,并且携带ticket

(4) 由demo1的过滤器拦截,拦截之后将ticket取出并后台去cas服务器校验(校验地址:)

(5) 如果校验ticket成功,那么cas就可以返回用户信息,我们的子系统就可以缓存用户信息

cas:用户信息存储在session

cas登陆成功之后会返回一个非常关键的cookie:CASTGC

CASTGC:value	path:/cas

-- 全局会话意思:就是标识浏览器当前可能已经登陆

当子系统校验tikect成功并且,响应浏览器,那么当前子系统和浏览器之间的局部会话也就可以直接获得用户信息,只要浏览器和子系统之间的局部会话经过了ticket校验,就不会再重定向到cas服务器

2.2 认证流程

(1) 访问demo2: , 由于没有校验过ticket,但是浏览器存在全局会话Cookie: CASTGC

(2) 重定向到CAS服务器并且携带service参数:

由于全局会话已经存在,那么当前请求就携带CASTGC到服务器,CAS服务器就通过CASTGC这个cookie获取当前浏览器登陆状态,如果已经登陆就直接重定向会demo2同时携带ticket。

(3) 接着子系统就有过滤器或者拦截器获取ticket去cas校验

(4) 如果校验ticket成功,那么cas就可以返回用户信息,我们的子系统就可以缓存用户信息,和浏览器建立局部会话

转载于:https://my.oschina.net/edisonOnCall/blog/3044404

你可能感兴趣的文章
PySide教程:一个简单的点击“.NET研究”按钮示例
查看>>
find命令
查看>>
网络通讯程序整理(一)
查看>>
[转载]一站式WPF--Window
查看>>
poj-1159 Palindrome **
查看>>
VS2010/VS 2013 删除空行
查看>>
解决linux ssh登陆缓慢问题
查看>>
将二叉查找树转化为链表的代码实现
查看>>
[转]宽字符的介绍
查看>>
UIScrollView用法
查看>>
SQL 判断两个时间段是否有交叉
查看>>
python打包_cx_freeze
查看>>
web.config/app.config敏感数据加/解密的二种方法
查看>>
PHP监控linux服务器负载
查看>>
delphi 入门教程
查看>>
技术人员,你拿什么拯救你的生活----温水煮青蛙
查看>>
最小排列数
查看>>
[C] zintrin.h: 智能引入intrinsic函数 V1.01版。改进对Mac OS X的支持,增加INTRIN_WORDSIZE宏...
查看>>
uva 101 The Blocks Problem
查看>>
Linux终端中设置vi编辑命令
查看>>