CAS单点登录系列原理简单介绍

网友投稿 1005 2022-05-29

文章目录

一、 SSO简介

1.1 单点登录定义

1.2 单点登录角色

1.3 单点登录分类

二、 CAS简介

2.1 CAS简单定义

2.2 CAS体系结构

2.3 CAS原理

三、CAS服务端部署

附录

一、 SSO简介

1.1 单点登录定义

单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统。也就是说只要登录一次单体系统就可以。

1.2 单点登录角色

单点登录一般包括下面三种角色:

①用户(多个);

②认证中心(一个);

③Web应用(多个)。

PS:这里所说的web应用可以理解为SSO Client,认证中心可以说是SSO Server。

1.3 单点登录分类

因为http协议是无状态的协议,所以要保持登录状态,必须要存储登录信息,按照存储方式,单点登录实现方式主要可以分为两种。

一种是基于Cookie的,这种比较常见,比如下文介绍的CAS也是基于Cookie的;

另外一种是基于Session的,其实理解起来就是会话共享,只有实现不同子系统之间的会话共享就能实现单点登录,详情可以参考我之前的博客,就是实现会话共享实现单点登录的,https://blog.csdn.net/u014427391/article/details/78653482

CAS单点登录系列之原理简单介绍

二、 CAS简介

2.1 CAS简单定义

CAS(Center Authentication Service)是耶鲁大学研究的一款开源的单点登录项目,主要为web项目提供单点登录实现,属于Web SSO。

CAS Github链接

Apereo CAS官方网站

2.2 CAS体系结构

CAS体系结构分为CAS Server和CAS Client。

CAS Server就是Cas开源的,需要去github下载,然后进行修改;Cas Client

可以是App或者web端的或者PC端,CAS支持多种开发语言,java、php、C#等等

PS:图来自官网,这里简单介绍一下,从图可以看出,CAS支持多种方式的认证,一种是LDAP的、比较常见的数据库Database的JDBC,还有Active Directory等等;支持的协议有Custom Protocol 、 CAS 、 OAuth 、 OpenID 、 RESTful API 、 SAML1.1 、 SAML2.0 等

2.3 CAS原理

下面给出一张来自CAS官方的图片

CAS登录等系统分为CAS Server和CAS Client,下面,我根据我的理解稍微解释一下:

1、用户访问CAS Client请求资源

2、客户端程序做了重定向,重定向到CAS Server

3、CAS Server会对请求做认证,验证是否有TGC(Ticket Granted Cookie,有TGC说明已经登录过,不需要再登录,没有就返回登录页面

4、认证通过后会生成一个Service Ticket返回Cas Client,客户端进行Ticket缓存,一般放在Cookie里,我们称之为TGC(Ticket Granted Cookie)

5、然后Cas Client就带着Ticket再次访问Cas Server,CAS Server进行Ticket验证

6、CAS Server对Ticket进行验证,通过就返回用户信息,用户拿到信息后就可以登录

看到这个过程,我们大概就能理解CAS是怎么实现的,看起来过程挺多的,不过这些过程都是CAS在后台做的。CAS Service和CAS Client通讯基于HttpUrlConnection

注意要点:

TGT(Ticket Granded Ticket),就是存储认证凭据的Cookie,有TGT说明已经通过认证

ST(Service Ticket),是由CAS认证中心生成的一个唯一的不可伪装的票据,用于认证的

没登录过的或者TGT失效的,访问时候也跳转到认证中心,发现没有TGT,说明没有通过认证,直接重定向登录页面,输入账号密码后,再次重定向到认证中心,验证通过后,生成ST,返回客户端保存到TGC

登录过的而且TGT没有失效的,直接带着去认证中心认证,认证中心发现有TGT,重定向到客户端,并且带上ST,客户端再带ST去认证中心验证

三、CAS服务端部署

现在博客简单介绍一下,CAS Server简单部署实现,CAS是一款开源框架,目前应用比较广泛。下面简单介绍一下:

cas开源到github上,不过只有几个版本有cas release服务端,其它大部分版本都只有source源码而已,所以其它版本都需要自己编译,不想自己编译的可以下载V4.0.0版本的。

https://github.com/apereo/cas/releases/tag/v4.0.0

下载cas server之后,我们就可以简单部署一下,中间件可以用Tomcat

cas的安全机制是依靠SSL实现的,所以一般的http非安全链接不支持的,虽然是这么说,不过学习练习的话,也可以去掉https要求,下面介绍说一下:

可以先将cas-server-4.0.0-release.zip解压到Tomcat的webapp目录下面,然后需要修改一个配置文件

(1)、先修改一下cas-server-4.0.0-release的WEB-INF下面的deployerConfigContext.xml

修改前:

1

2

3

4

修改后,PS:加上p:requireSecure=“false”

1

2

3

(2)、修改WEB-INF下面的spring-configuration文件夹下面的ticketGrantingTicketCookieGenerator.xml

修改前:

1

2

3

4

5

修改后,PS:改为p:cookieSecure=“false”

1

2

3

4

5

(3)、修改WEB-INF下面的spring-configuration文件夹下面的warnCookieGenerator.xml

修改前:

1

2

3

4

5

修改后,PS:改为p:cookieSecure=“false”

1

2

3

4

5

6

(4)、修改CAS默认登录jsp页面

可以注释WEB-INF\view\jsp\default\ui\casLoginView.jsp页面如下代码

Non-secure Connection

You are currently accessing CAS over a non-secure connection. Single Sign On WILL NOT WORK. In order to have single sign on work, you MUST log in over HTTPS.

1

2

3

4

5

6

去掉Https支持要求后,就可以通过http的链接登录cas server了,用户名是casuser,密码是Mellon

PS:可以在deployerConfigContext.xml里看到配置,正规项目是实现jdbc支持

1

2

3

4

5

6

7

8

单点登录

单点登出

附录

参考教程:

Cas专题文章列表

springboot + shiro + cas4.2.7 实战

HTTP

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:nanomsg高性能通信库的简单实用分享丨【拜托了,物联网!】
下一篇:html总结
相关文章