关于CAS实现单点登录

Posted 每天学Java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于CAS实现单点登录相关的知识,希望对你有一定的参考价值。

1、单点登录概述

1.1、什么是单点登录?

单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

1.2、什么是CAS?

CAS框架:CAS(Central Authentication Service,即:统一认证服务)是实现SSO单点登录的框架。

注:CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点: 

【1】开源的企业级单点登录解决方案。 

【2】CAS Server 为需要独立部署的 Web 应用。 

【3】CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, php, Perl, Apache, uPortal, Ruby 等。 


1.3、CAS框架结构

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

CAS Server用来负责用户的认证工作,就像是把第一次登录用户的一个标识

存在这里,以便此用户在其他系统登录时验证其需不需要再次登录。

CAS Client就是我们自己开发的应用程序,需要接入CAS Server端。当用户

访问我们的应用时,首先需要重定向到CAS Server端进行验证,要是原来登陆过,就免去登录,重定向到下游系统,否则进行用户名密码登陆操作。

1.4、CAS中3个术语

Ticket Granting ticket (TGT) :可以认为是CAS Server根据用户名密码生成的一张票,存在Server端

Ticket-granting cookie (TGC) :其实就是一个Cookie,存放用户身份信息,由Server发给Client端

Service ticket (ST) :由TGT生成的一次性票据,用于验证,只能用一次。相当于Server发给Client一张票,然后Client拿着这个票再来找Server验证,看看是不是Server签发的。

1.5、CAS处理流程

CAS处理流程图,如下图所示:

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

注意:ticket后面那一串就是ST

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

首次登陆完毕。

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

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

2. 应用场景

1.分布式多系统用户集中管理

2.用户权限集中管理

3.多因素认证(如微信pc端登录手机确认)

如公司有多个系统,分别OA系统、CRM系统、财务管理系统、设备管理系统等,总不能访问每个系统都要登录一遍吧,用户会疯掉的,应该我们认证一遍,其他系统即可访问。



以上是关于关于CAS实现单点登录的主要内容,如果未能解决你的问题,请参考以下文章

cas 单点登录 关于server获取用户名的问题

discuz x2怎么实现cas单点登录?

单点登录CAS使用记:使用maven的overlay实现无侵入的改造CAS

学习CAS实现SSO单点登录

CAS单点登录-关于服务器超时以及客户端超时的分析 (十)

nginx cas单点登录受影响吗