【实战】从零搭建SSO单点登录服务器 - 什么是CAS?

1,414 阅读2分钟

这是我参与更文挑战的第4天,活动详情查看: 更文挑战

4679233.png

前言

因系统逐渐增多,各个业务系统间无法共享用户状态,每个系统都需要用户登录。这对于用户来说很不友好,于是需要搭建一个SSO单点登录服务器,来做统一的登录、注销。

写这个系列的文章有两个目的:

  1. 记录自己的学习过程
  2. 网上关于使用 Apereo CAS 来做单点登录的文章比较少,故想分享给大家 注:Apereo CAS文档及仓库参考为6.3.4

往期链接

一、SSO和CAS

关系

前文中已经提到SSO指的是多个系统中只需登录一次,那么什么是CAS呢?
CAS本质上是一种实现单点登录SSO的手段,它是SSO的一种解决方案。
它两的关系就像Java中的抽象类和子类(定义与实现)

说到CAS就不得不说以下Apereo CAS开源项目,Apereo CAS开源的企业级单点登录系统。

Apereo CAS项目的历史

Apereo CAS 是耶鲁大学 Technology and Planning 实验室的 Shawn Bayern 在2002年推出的一个开源系统,起名为 Yale CAS。
2004年12月,CAS 转成 JASIG(Java Administration Special Interesting Group) 的一个项目,项目也随着改名为 JASIG CAS。
2012年,JASIG 跟 Sakai 基金会合并,改名为 Apereo 基金会,CAS也随之改名为Apereo CAS.

Apereo CAS支持的协议

Apereo CAS功能相当强大,支持绝大部分认证协议:

  • CAS (versions 1, 2, and 3)
  • SAML 1.1 and 2
  • OpenID Connect
  • OpenID
  • OAuth 2.0
  • WS Federation

二、CAS的项目架构

Apereo CAS项目架构还是比较简单的,如下图所示:

image.png

项目架构说明:

CAS Clients:CAS Clients 是指集成了CAS认证协议的应用程序。以Java中的SpringBoot项目为例的话,引入官方 cas-client 依赖,通过简单的配置(配置过滤器等)就可以与 CAS Server 进行通信

CAS Server:CAS 服务器是构建在 Spring Framework 上的 Java servlet,其主要职责是通过发布和验证 ticket 来验证用户并授予对启用 CAS 的服务(通常称为 CAS 客户端)的访问权限。(可以简单理解为发令牌,后续会有详细的流程描述)

三、总结

感谢看到最后,非常荣幸能够帮助到你~♥