单点登录实现的几种方式及原理【单点登录】 | 您所在的位置:网站首页 › 分页技术的几种实现方法是哪些 › 单点登录实现的几种方式及原理【单点登录】 |
文章目录
一、什么是单点登录二、单点登录原理三、单点登录实现方式1.基于Cookie+Redis的单点登录2.分布式session方式实现单点登录3.token验证4.session广播5.CAS 中央认证服务
一、什么是单点登录
单点登录的英文名叫做:Single Sign On(简称SSO),指在同一帐号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的系统。简而言之,多个系统,统一登陆。 为什么需要做单点登录系统呢?在一些互联网公司中,公司旗下可能会有多个子系统,每个登陆实现统一管理,多个账户信息统一管理 SSO单点登陆认证授权系统。比如阿里系的淘宝和天猫,显而易见这是两个系统,但是在使用过程中,只要你登录了淘宝,同时也意味着登录了天猫,如果每个子系统都需要登录认证,用户早就疯了,所以我们要解决的问题就是,用户只需要登录一次就可以访问所有相互信任的应用系统。 二、单点登录原理sso需要一个独立的认证中心,所有子系统都通过认证中心的登录入口进行登录,登录时带上自己的地址,子系统只接受认证中心的授权,授权通过令牌(token)实现,sso认证中心验证用户的用户名密码正确,创建全局会话和token,token作为参数发送给各个子系统,子系统拿到token,即得到了授权,可以借此创建局部会话,局部会话登录方式与单系统的登录方式相同。 单点登录的实现方案,一般就包含:Cookies,Session同步,分布式Session,目前的网站采用比较多的方式是token令牌和分布式Session的方式。 1.基于Cookie+Redis的单点登录最简单的单点登录实现方式,用cookie作为媒介存放用户凭证。 用户登录系统之后,会返回一个加密的cookie,当用户访问子应用的时候会带上这个cookie,授权以解密cookie并进行校验,校验通过后即可登录当前用户。 redis:在key:生成唯一随机值(ip、用户id等等),在value:用户数据 cookie:把redis里面生成key值放到cookie里面 通过加密Cookie可以保证安全性,当然这是在源代码不泄露的前提下。如果Cookie的加密算法泄露,攻击者可以通过伪造Cookie伪造成特定用户身份。 对于问题二更是硬伤,所以才有了以下的分布式session方案。 2.分布式session方式实现单点登录流程运行: (1) 用户第一次登录时,将会话信息(用户Id和用户信息),比如以用户Id为Key,写入分布式Session; (2) 用户再次登录时,获取分布式Session,是否有会话信息,如果没有则调到登录页; (3) 一般采用Cache中间件实现,建议使用Redis,因此它有持久化功能,方便分布式Session宕机后,可以从持久化存储中加载会话信息; (4) 存入会话时,可以设置会话保持的时间,比如15分钟,超过后自动超时; 结合Cache中间件,实现的分布式Session,可以很好的模拟Session会话。 3.token验证 在项目某个模块进行登录,登录之后,按照jwt规则生成字待串,把登录之后用户包含到生成字符串里面,把字符串返回(1)可以把宁符串通过cookie返回 (2)把字符串通过地址栏返回 前端收到token之后将token存储在自己的请求头之中或者url后面,这样每次请求都可以带着token请求。 再去访问项目其他模块,获取地址栏或者请求头里面的token,根据宇符串获职用户信息。 同时为了设置失效时间,可以将token放在redis中,设置失效时间,判断过期。 4.session广播方法太老使用麻烦,了解即可。 5.CAS 中央认证服务https://blog.csdn.net/wang121213145/article/details/124822899?spm=1001.2014.3001.5501 |
CopyRight 2018-2019 实验室设备网 版权所有 |