单点登录SSO

本文介绍了单点登录(SSO)的概念,涉及身份提供者、服务提供者和令牌的作用。详细阐述了Cookie、Session和Token三种常见的实现方式,包括它们的工作原理、优缺点及适用场景。同时提到了OAuth2.0在Token方案中的应用。
摘要由CSDN通过智能技术生成

参考链接

一、什么是单点登录

单点登录的英文名叫做:Single Sign On(简称SSO),指在同一帐号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的系统。简而言之,多个系统,统一登陆。

相比于单系统登录,sso需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。间接授权通过令牌实现,sso认证中心验证用户的用户名密码没问题,创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌,即得到了授权,可以借此创建局部会话,局部会话登录方式与单系统的登录方式相同。这个过程,也就是单点登录的原理,用下图说明
在这里插入图片描述
SSO 的工作原理通常包括以下几个主要组件:

  • 身份提供者(Identity Provider,IdP):
    身份提供者是负责管理用户身份信息的系统,它会认证用户的身份并颁发令牌。在SSO中,用户首先通过身份提供者进行认证,然后将令牌传递给各个关联的服务提供者。
  • 服务提供者(Service Provider,SP):
    服务提供者是提供实际服务的系统或应用,它会接收来自身份提供者颁发的令牌,并使用该令牌来验证用户身份,从而实现无缝登录体验。
  • 令牌(Token):
    在SSO过程中,身份提供者通常会颁发令牌给用户,用于代表用户的身份信息。这个令牌可以被传递给不同的服务提供者,以便服务提供者可以验证用户身份并授权用户访问相应的资源。

二、单点登录的实现方式

单点登录的实现方案,一般就包含:Cookie、Session、Token参考链接

1.Cookie方案:

流程:

用cookie作为媒介存放用户凭证。 用户登录系统之后,会返回一个加密的cookie,当用户访问子应用的时候会带上这个cookie,授权以解密cookie并进行校验,校验通过后即可登录当前用户。

在这里插入图片描述

缺点:

(1)Cookie不安全:攻击者可以通过伪造Cookie伪造成特定用户身份,可以用加密规避(前提是加密算法不被泄露)。

(2)不能跨域实现免登:Cookie一般是以域名为分割的。如:baidu.com 无法读到 cnblogs.com 写的 cookie。域名是可以访问上级域名的Cookie的。 即a.baidu.com是可以访问baidu.com下的Cookie的。(一级域名相同,只是二级或更高级域名不同的站点,如:a.baidu.com、b.baidu.com可以通过设置 domain 参数共享 cookie 读写。)

补充:域名通过 “.” 号切分后,从右往左看,不包含 “.” 的是顶级域名,包含一个 “.”的是一级域名,如:baidu.com,
包含两个“.”的是二级域名,如:a. baidu.com ,以此类推。

2.Session方案:

流程:
因为是分布式的系统,多服务器是不共享session,传统的单机session不适用于分布式系统中,所以这里使用分布式session。session属于有状态,
实现分布式session有四种方案(session复制、客户端存储、HASH一致性、统一存储)。

流程运行:

(1) 用户第一次登录时,将会话信息(用户Id和用户信息),比如以用户Id为Key,写入分布式Session;
(2) 用户再次登录时,获取分布式Session,是否有会话信息,如果没有则调到登录页;
(3) 一般采用Cache中间件实现,建议使用Redis,因此它有持久化功能,方便分布式Session宕机后,可以从持久化存储中加载会话信息;
(4) 存入会话时,可以设置会话保持的时间,比如15分钟,超过后自动超时;

缺点:

(1)服务器压力增大:通常session是存储在内存中的,每个用户通过认证之后都会将session数据保存在服务器的内存中,而当用户量增大时,服务器的压力增大。(可以将数据保存在磁盘中)
(2)扩展性不强:如果将来搭建了多个服务器,虽然每个服务器都执行的是同样的业务逻辑,但是session数据是保存在内存中的(不是共享的),用户第一次访问的是服务器1,当用户再次请求时可能访问的是另外一台服务器2,服务器2获取不到session信息,就判定用户没有登陆过。(可以使用分布式session将session在各个集群中保持一致)
(3)CSRF跨站伪造请求攻击:session是基于cookie进行用户识别的, cookie如果被截获,用户就会很容易受到跨站请求伪造的攻击。

3.Token方案:

流程:
现如今Token方案登录认证大多采用OAuth2.0方案,这里只是简单实现sso效果,所以没实现OAuth2.0流程。
在这里插入图片描述

缺点:
(1)占用带宽
(2)无法在服务器端销毁(token生成后就返回给了客户端,服务器端无法进行删除)
注:基于微服务开发,选择token的形式相对较多,因此我之后会使用token实现sso

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值