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

967 阅读2分钟

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

image.png

前言

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

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

  1. 记录自己的学习过程,并分享给大家
  2. 网上关于使用 Apereo CAS 来做单点登录的文章比较少,故想分享给大家

一、了解SSO单点登录

定义

单点登录全称 Single Sign On (SSO)。SSO的定义是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
单点登录的目的就是将各个子系统中的用户认证打通,集中到SSO服务中来实现。

如下图所示:

用户在A系统中登陆后,就可以直接访问系统B、C,无须再次登录

未命名文件.png

现有方案

目前单点登录有两种比较流行的方案:.

  • 基于Cookie的Session共享
  • CAS中央认证服务

1. 基于Cookie的Session共享

有一个顶级域名 test.cn
业务系统A:a.test.cn
业务系统B:b.test.cn
业务系统C:c.test.cn

用户首次发起登录请求

此处以首次访问业务系统A为例子,流程如下所示:

解释:
cookie:主要用来在前端存储SessionId(如为tomcat则key为JSessionId)
Session:会话中会保存用户的基本信息以及登录状态等

单点登录时序图.png

用户访问其它业务系统(第二次)

以第二次访问业务系统B为例,流程如下所示:

因为第一次已经登录过了,在前端中已经保存了顶级域名对应的SessionId
在访问子域名时,携带此SessionId就可以通过校验,进行正常的业务流程了

未命名文件(1).png

2. CAS中央认证服务

CAS,Central Authentication Service—中央认证服务,是Yale 大学发起的一个企业级的、开源的项目,旨在为Web应用系统提供一种可靠的SSO解决方案(官方文档

认证流程

简易的认证流程如下所示:
简单来说就是CAS分为服务和客户端两个部分
tips:事件原因,详细的认证流程下一篇再细述

image.png

优势

CAS可以实现多域名间用户信息共享,比如CAS服务部署在test1.cn,应用系统A部署再test2.cn,应用系统C部署在test3.cn

二、总结

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