最近公司要上SSO单点登录 ,因为以前也只是听说过单点登录,但具体单点登录是什么 怎么用一概不知,趁着这个机会了解和研究下。最后整理下以备以后查阅。如有不足请多指教!
01.背景介绍
单点登录:Single Sign On,简称SSO,是目前比较流行的企业业务整合的解决方案之一,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统
CAS框架:CAS(Central Authentication Service)是实现SSO单点登录的框架。
02. 结构
CAS分为两部分,CAS Server和CAS Client
CAS Server:用来负责用户的认证工作,就像是把第一次登录用户的一个标识存在这里,以便此用户在其他系统登录时验证其需不需要再次登录。
CAS Client:就是我们自己的应用,需要接入CAS Server端。当用户访问我们的应用时,首先需要重定向到CAS Server端进行验证,要是原来登陆过,就免去登录,重定向到下游系统,否则进行用户名密码登陆操作。
03.名称解释
Ticket Granting ticket(TGT):可以认为是CAS Server根据用户名密码生成的一张票,存在server端
Ticket-granting cookie(TGC) :其实就是一个cookie,存放用户身份信息,由server发给client端
Service ticket(ST):由TGT生成的一次性票据,用于验证,只能用一次。相当于server发给client一张票,然后client拿着这个票再来找server验证,看看是不是server签发的。
04.流程
用户首次登录:
1.用户通过浏览器访问系统A获取受限资源,此时系统A将重定向到CAS-SERVER ,判断是否有cookie,发现没有则再次重定向到CAS-SERVER 的login 登录界面。并且带有URL 即原始系统地址,以便认证通过跳转。
https://localhost:8443/cas/login?service=http://localhost:8081/cas-client
注意:service后面这个地址就是登录成功后要重定向的下游系统URL
2.在登陆页面输入用户名密码认证,认证成功后cas-server生成TGT,再用TGT生成一个ST。然后再重定向并返回ST和cookie(TGC)到浏览器
3.浏览器带着ST再访问想要访问的地址
http://localhost:8081/?ticket=ST-25939-sqbDVZcuSvrvBC6MQlg5
注意:ticket后面那一串就是ST
4.浏览器的服务器收到ST后再去cas-server验证一下是否为自己签发的,验证通过后就会显示页面信息,也就是重定向到第1步service后面的那个URL
首次登陆完毕.
已登录用户访问应用群中系统B时:
5.再登陆另一个接入CAS的系统B,重定向到CAS Server,server判断是第一次来(但是此时有TGC,也就是cookie,所以不用去登陆页面了),但此时没有ST,去cas-server申请一个于是重定向到cas-server
http://localhost:8443/cas/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步)
简易流程图如下:
CAS 请求认证时序图如下:
领取专属 10元无门槛券
私享最新 技术干货