SSO单点登录之CAS 基于CAS-overlay服务器搭建+IDEA+Tomcat运行(一)

最近公司要上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 请求认证时序图如下:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180511G0VPV300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券