cas java单点登录_基于CAS实现SSO单点登录

CAS代码和接入demo网上满天飞,也挺简单,不再赘述,这里仅理一下CAS原理和基础模式流程。

所谓单点登录,就是同平台的诸多应用登陆一次,下一次就免登陆的功能。就像你在知乎首页登录一次,下一次再访问知乎专栏或是知乎日报就可以免去登录操作。

实现SSO的方式有很多,现在主流的就是CAS这种基于session的单点登录形式。

结构

CAS分为两部分,CAS Server和CAS ClientCAS 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签发的。就像是我给了你一张我的照片,然后你拿照片再来问我,这个照片是不是你。。。没错,就是这么无聊。

流程

1. 用户访问网站,第一次来,重定向到 CAS Server,发现没有cookie,所以再重定向到CAS Server端的登录页面,并且URL带有网站地址,便于认证成功后跳转形如 http ://cas-server:8100/login?service=http ://localhost:8081

service后面这个地址就是登录成功后要重定向的下游系统URL

2. 在登陆页面输入用户名密码认证,认证成功后cas-server生成TGT,再用TGT生成一个ST。 然后再第三次重定向并返回ST和cookie(TGC)到浏览器

3. 浏览器带着ST再访问想要访问的地址

http ://localhost:8081/?ticket=ST-25939-sqbDVZcuSvrvBC6MQlg5ticket后面那一串就是ST

4. 浏览器的服务器收到ST后再去cas-server验证一下是否为自己签发的,验证通过后就会显示页面信息,也就是重定向到第1步service后面的那个URL首次登陆完毕

5. 再登陆另一个接入CAS的网站,重定向到CAS Server,server判断是第一次来(但是此时有TGC,也就是cookie,所以不用去登陆页面了),但此时没有ST,去cas-server申请一个吧!于是重定向到cas-server形如:http: //cas-server:8100/login?service=http ://localhost:8082 && TGC(cookie) (传目标地址和cookie)

6. cas-server生成了ST后重定向给浏览器http ://localhost:8082/?ticket=ST-25939-sqfsafgefesaedswqqw5-xxxx

7. 浏览器的服务器收到ST后再去cas-server验证一下是否为自己签发的,验证通过后就会显示页面信息(同第4步)

百度搜了个简易流程图如下:

OVER

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值