单点登录的含义有哪些?了解这些就够了

xzdxmynet 发布于 2024-02-19 阅读(107)

前言

从这一章开始,一一哥给大家讲解一个非常常见又重要的知识点,那就是单点登录! 现在大型的分布式项目基本上都会考虑实现单点登录,而且现在互联网上的单点登录也有很多。 实现方案和开源项目,但是没有详细解释单点登录的实现原理。 您可以参考其他开源案例项目,结合本系列文章,对单点登录有更深入的了解。

如果您不知道什么是单点登录,那么请先阅读本文,了解单点登录的含义。

1. 单点登录

1.生成背景

早期的时候,一个公司可能只有一个公司,后来逐渐开始增多,而且每个公司都要注册登录,注销的时候也得一个一个的注销。 用户体验非常差!

比如我们要访问百度系列,我们需要登录百度知道、百度新闻、百度贴吧、百度绘本……​​对于百度旗下的每一个产品,我们都要注册一个账号,登录一次,并分别注销。 登录然后这样一一做,可能会让人抓狂。

图片1

那么有没有办法优化这种登录体验呢? 例如:公司名下的任何服务只需要注册一次,登录时只需要登录一次,注销时只需要注销一次。 如果这样的需求能够实现,用户体验是否会得到很大的提升? 那么应该用什么来实现呢?

图片2

2、多系统登录实现方案

如果要在多系统项目中实现登录,目前有两种可行的实现方案:

· 同域名下共享

· 登入

3、共享解决方案的缺陷

虽然同域名下共享可以一定程度上解决多个系统的登录问题,但是这种方案有很多局限性,如下:

· 应用组域名必须统一;

· 应用组内各系统使用的Web技术(至少是Web服务器)必须相同,否则密钥(is)的名称不同,会话无法维持;

· 共享方式无法实现跨语言技术平台登录,例如Java、PHP、.Net等之间无法共享;

· 本质上并不安全。

4. 单点登录的概念

单点登录(Sign On),简称SSO,是目前比较流行的企业业务集成解决方案之一。 SSO是指在多应用系统中,用户只需登录某个应用一次,然后登录状态就可以同时在所有相关且独立的系统中共享。

即您只需登录一次即可访问所有相互信任的应用系统,并且在所有其他系统中均获得授权,无需再次登录。 此外,用户只需注销一次即可注销所有其他受信任的服务。 因此,SSO包括单点登录和单点注销。

5. 单点登录的优点

· 单点登录降低用户登录成本;

· 统一不同系统之间的账户体系;

· 减少每个系统的用户设计所花费的精力。

6. 使用场景

一般来说,每个单独的系统都会有自己的安全系统和身份认证系统。 集成之前,您需要登录才能进入各个系统。 这种情况不仅给管理带来很大困难,也带来重大安全隐患。 以下是一些知名调查公司的统计数据:

A。 用户平均每天花费 16 分钟在身份验证任务上 - 来源:IDS

b. 频繁的 IT 用户平均拥有 21 个密码 - 来源:NTA

C。 49% 的人写下密码,而 67% 的人很少更改密码

d. 每 79 秒就会发生一起身份盗窃事件 - 来源:Small Assoc

e. 全球欺诈损失每年约为 12B - 来源:Comm Fraud Assoc

使用“单点登录”集成后,您只需登录一次即可进入多个系统,无需再次登录。 这不仅带来更好的用户体验,更重要的是降低安全风险和管理成本。 看看下面的统计数据:

A。 提高 IT 效率:每 1,000 个托管用户为每个用户节省 7 万美元;

b. 帮助台呼叫次数至少减少 1/3,对于拥有 10K 员工的公司来说,每个用户每年可以节省 75 美元,总计 64.8 万美元;

C。 提高生产力:每位新员工节省 1,000 美元,每位老员工节省 350 美元 资料来源:Giga;

d. 投资回报率:7.5 至 13 个月 来源:

另外,“单点登录”的使用仍然是SOA微服务时代的需求之一。 在面向服务的架构中,服务和程序之间存在大量的通信。 服务之间的安全认证是SOA应用中的难点之一。

因此,建立“单点登录”系统可以大大简化SOA安全问题,提高服务之间的协作效率。

7、单点登录执行流程(要点)

在单点登录系统中,需要定义一个独立的认证中心。 只有认证中心才能接受用户的用户名、密码等安全信息。 其他系统不提供登录入口,仅接受认证中心的间接授权。 间接授权是通过命令卡实现的。

如果SSO认证中心验证用户的用户名和密码没有问题,则会创建授权令牌。 在接下来的跳转过程中,授权令牌将作为参数发送到各个子系统。 当子系统获得授权令牌时,它就被授权并可以使用它来创建部分会话。 部分会话的登录方法与单个系统相同。 登录方法是一样的。

这个过程就是单点登录的原理。 我们用下图来详细解释一下。

根据上图,我们可以梳理出单点登录请求执行流程(要点):

A。 例如,用户访问系统1的受保护资源,系统1发现用户没有登录,会先跳转到SSO认证中心,并使用自己的地址作为参数,如://system /xxx;

b. 如果SSO认证中心发现用户没有登录,会引导用户进入登录页面,并带上系统1的地址作为参数;

C。 用户输入用户名和密码,向SSO认证中心提交登录申请,并带上系统1的地址作为参数;

d. SSO认证中心对用户信息进行验证。 验证成功后,将创建用户与SSO认证中心之间的会话,称为全局会话,并创建授权令牌;

e. SSO认证中心用token跳转回原来的请求地址(系统1);

F。 系统1获得授权token后,去SSO认证中心验证token是否有效,并带上系统1的地址作为参数;

G。 SSO认证中心首先检查token是否有效。 如果正常,则返回有效信息,并将系统1的信息注册到SSO授权中心;

H。 系统1使用授权令牌与用户创建会话,称为部分会话,然后将受保护的资源返回给用户;

我。 如果用户继续访问系统2的受保护资源,还会与SSO授权中心交互进行授权;

j。 例如,系统2发现用户没有登录,就会跳转到SSO认证中心,并携带自己的地址作为参数;

k. 如果SSO认证中心发现用户已经登录,就会跳转回系统2的地址,并带上授权token;

湖系统2获取到授权token,然后去SSO认证中心验证授权token是否有效;

米。 SSO认证中心也会验证授权令牌,返回有效信息,并向SSO授权中心注册系统2的信息;

名词系统 2 使用授权令牌与用户创建部分会话并返回受保护的资源。

通过上面的SSO单点登录执行流程我们可以知道,用户成功登录后,会与SSO认证中心及各个子系统建立会话。

用户与SSO认证中心建立的会话称为全局会话,用户与各子系统建立的会话称为本地会话。 本地会话建立后,用户访问子系统受保护资源将不再经过SSO认证中心。 全局会话和本地会话有以下限制:

· 如果本地会话存在,则全局会话也必须存在;

· 全局会话存在,但本地会话不一定存在;

· 全局会话被销毁,本地会话也必须被销毁。

单点登录涉及到SSO认证中心和众多子系统。 各子系统需要与SSO认证中心进行通信,交换令牌、验证令牌以及发起注销请求。 因此,每个子系统必须集成SSO客户端和SSO认证。 中心是SSO 服务器。 整个单点登录过程本质上就是SSO客户端和服务器之间的通信过程。

8、单独注销执行流程(要点)

在多应用系统中,既然我们实现了单点登录,自然也需要单点注销。 即一个子系统退出后,所有子系统的会话都会被销毁。 我们用下图来说明。

SSO认证中心将始终监控全局会话的状态。 一旦发现全局会话被破坏,监听器就会通知所有注册系统执行注销操作。

下面对上图做一个简单的解释:

· 例如,用户向系统1发起注销请求;

· 系统1根据用户与系统1建立的本地会话ID获取授权令牌,然后系统1向SSO认证中心发起注销请求;

· SSO认证中心将首先验证授权令牌是否有效,然后销毁全局会话并删除使用该授权令牌注册的所有系统地址;

· SSO认证中心向所有注册系统发起注销会话请求;

· 各注册系统收到SSO认证中心的注销请求,销毁部分会话;

· 最后,SSO认证中心将引导用户进入登录页面。

2.CAS单点登录系统

1.CAS概念

前面我们给大家介绍过,如果一个企业下的所有系统都使用同一个域名,那么实现单点登录其实是很简单的。 我们只需要把domain设置为顶级域名,在服务器端共享session即可。 然而现实中并不存在这样的理想状态。 一般来说,实现单点登录的成本比较高。 接下来给大家介绍一个实现单点登录的开源项目CAS,可以大大降低实现单点登录的难度和开发成本。 。

CAS ( ),中央认证服务系统。 在CAS系统中,分为CAS和CAS两部分。 CAS是单点登录系统中负责验证的服务器,CAS登录状态下CAS是客户端。

2. CAS核心概念(要点)

CAS系统中有3个重要术语:

· 票证(TGT):用户登录后生成的票证,包含用户的认证身份、有效期等信息。 存储在CAS中,类似于我们常见的服务器会话;

·(TGC):这是存储的一段数据,类似于会话ID。 用户与CAS交互时,帮助用户找到对应的TGT;

·(ST):这是 CAS 使用 TGT 签发的一次性票据。 CAS使用ST与CAS交互,获取用户的验证状态。

3、CAS单点登录执行步骤(要点)

CAS单点登录的完整步骤如下:

(1)用户首先通过浏览器访问CAS程序的页面;

(2)当CAS判断用户需要身份认证时,会将其作为请求参数携带,并返回302状态码,指示浏览器重定向到CAS端,如://cas./me.,即是用户的原始访问页面。 ;

(3)然后浏览器使用重定向到CAS;

(4)CAS获取并验证用户携带的TGC。 如果成功,则身份认证完成; 否则,用户将被重定向到CAS提供的登录页面,例如:://cas./me,用户在该页面中输入用户名和密码。 完成身份验证;

(5)如果用户已经登录系统,CAS可以直接获取用户的TGC,并根据TGC找到TGT。 如果这是您第一次登录,CAS会首先生成一个TGT。 每次验证时,CAS都会根据TGT下发ST,将ST拼接到参数中,并给用户设置对应的TGC(域名为CAS),并返回302状态码,指示浏览器重定向到,例子;

(6)浏览器存储TGC并用ST进行重定向;

(7)CAS获得ST(即请求参数中)后,会请求CAS验证ST的有效性;

(8)如果CAS验证ST有效,则通知CAS用户有效,并返回用户信息。

CAS在获取用户信息时可以使用表单来管理用户会话。 后续的交互请求不再需要重定向到CAS。 CAS可以直接返回用户请求的资源。 整个流程如下图所示:

请牢牢掌握以上单点登录执行流程以及CAS的核心概念。 这些知识点将有助于我们理解和掌握以下知识点。 如何搭建CAS服务器请期待下面的文章!

标签:  登录 会话 认证 授权 注销 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。