尚融宝17-用户身份认证的三种模式

news2024/11/27 8:42:25

目录

1、单一服务器模式

2、SSO(Single Sign On)模式

3、Token模式


1、单一服务器模式

即只有一个服务器,用户通过输入账户和密码,提交表单后服务器拿到前端发送过来的数据查询数据库是否存在该用户,其一般流程如下:

  1. 用户向服务器发送用户名和密码。
  2. 验证服务器后,相关数据(如用户名,用户角色等)将保存在当前会话(session)中。
  3. 服务器向用户返回session_id,session信息都会写入到用户的Cookie。
  4. 用户的每个后续请求都将通过在Cookie中取出session_id传给服务器。
  5. 服务器收到session_id并对比之前保存的数据,确认用户的身份。

缺点:

  • 单点性能压力,无法扩展。
  • 分布式架构中,需要session共享方案,session共享方案存在性能瓶颈。

比如,有服务器A和服务器B,此时用户先访问服务器A后被提示登录,那么用户登录后cookie会记录与服务器A对应的sessionId,此时用户再去访问同个微服务的不同应用,即服务器B。此时因为服务器A和服务器B是独立的,sessionId并不共享,所以用户又被要求登录一次。

session共享方案:
session广播:性能瓶颈,不推荐
redis代替session:推荐,性能高,即将sessionId等可以识别用户登录的信息存放到redis,可以设置对应的过期时间,当用户访问对应的服务器就去redis中获取相应的的信息。

2、SSO(Single Sign On)模式

分布式,SSO(single sign on)模式:单点登录英文全称Single Sign On,简称就是SSO。它的解释是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。

  • 如图所示,图中有3个系统,分别是业务A、业务B、和SSO。
  • 业务A、业务B没有登录模块。
  • 而SSO只有登录模块,没有其他的业务模块。

一般过程如下:

  1. 当业务A、业务B需要登录时,将跳到SSO系统。
  2. SSO从用户信息数据库中获取用户信息并校验用户信息,SSO系统完成登录。
  3. 然后将用户信息存入缓存(例如redis)。
  4. 当用户访问业务A或业务B,需要判断用户是否登录时,将跳转到SSO系统中进行用户身份验证,SSO判断缓存中是否存在用户身份信息。
  5. 这样,只要其中一个系统完成登录,其他的应用系统也就随之登录了。这就是单点登录(SSO)的定义。

优点 :  

用户身份信息独立管理,更好的分布式管理。可以自己扩展安全策略

缺点:

认证服务器访问压力较大。每次访问服务都需要跳转到SSO服务进行验证登录。

3、Token模式

  1. token的引入:token是在客户端频繁向服务器端请求数据,服务器端频繁的去数据库查询用户名和密码并进行对比。由此,token出现了。
  2. token的定义:token是服务器端生成的一串字符串,作为客户端请求的一个令牌,当第一次登录后,服务器生成一个token并返回给客户端,客户端带着这个token前来发送请求,无需带上用户名和密码。
  3. 使用token的目的:token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使得服务器更加健壮。
  4. token的产生:token是在服务器端产生的,如果前端使用用户名/密码向服务器端请求认证,服务器端认证成功后,那么在服务端会返回token给前端,前端可以在每次请求的时候带上token表明自己携带用户。

客户端将用户名和密码提交道授权服务器进行验证,验证通过后会返回一个token存放在客户端,客户端可以通过token去访问其他的服务器,就不需要像SSO模式一样每次访问SSO服务进行认证

优点:

  • 无状态: token是无状态(即不将用户信息存在服务器或 Session 中),session是有状态的
  • 基于标准化:你的API可以采用标准化的 JSON Web Token (JWT)

缺点:

  • 占用带宽
  • 无法在服务器端销毁,因为token是存放在客户端的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/428994.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【分享】体验微软Bing在线绘图功能

哈喽,大家好,我是木易巷~ 木易巷体验了一下子微软Bing在线绘图功能,快来看看吧~ 简单介绍 New Bing 不了解或者没有注册New Bing的小伙伴可以看看这一篇: 【教程】你现在还不知道微软的New Bing?你out了&#xff0…

【NestJs】使用MySQL关联查询

上一篇文章介绍了NestJs使用MySQL创建多个实体,接下来讲到的则是实体创建完毕之后,开始进行查询。里面可能涉及到nestjs使用语法,要是不知道的小伙伴可以先行了解,也可以模仿写,后面我会继续出nestjs的教程。也欢迎大家…

SpringMVC的基本使用-------基本注解RequestMapping、基本数据类型绑定、参数绑定、POJO类型绑定

SpringMVC的三层架构和MVC SpringMVC简介 三层架构概述: 一种是 C/S 架构,也就是客户端/服务器,另一种是 B/S 架构,也就是浏览器服务器。在 JavaEE 开发中,几乎全都是基于 B/S 架构的开发。那么在 B/S 架构中&#…

时间序列信号阈值降噪方法,有什么可以创新的地方吗?

可以换个空间,从图域的角度进行分析,比如图傅里叶变换,图小波变换等图时频分析方法。图小波阈值降噪的基本思想是通过将时间序列信号转换成路图信号,再利用图小波变换分解成尺度函数系数和一系列对应不同尺度的谱图小波系数&#…

VAE 理论推导及代码实现

VAE 理论推导及代码实现 熵、交叉熵、KL 散度的概念 熵(Entropy) 假设 p (x)是一个分布函数,满足在 x 上的积分为 1,那么 p(x)p(x)p(x)的熵定义为 H(p(x))H (p (x))H(p(x)),这里我们简写为 H(p)H(p)H(p) H(p)∫p(x)…

移动硬盘文件或目录损坏且无法读取,这样做就对了!

案例:移动硬盘文件或目录损坏且无法读取怎么办 【我的移动硬盘插入电脑后突然就显示文件损坏,遇到这种情况我应该怎么处理呀?感谢回答!】 移动硬盘是一种方便携带和存储数据的设备,然而,有时候可能会遇到…

UE中的channel

当我们需要处理碰撞矩阵,或者调用接口投射射线进行检测等,为了区分哪些对象可以被射线检测到,哪些对象忽略,就需要用到channel。 1.Channel 简介 在UE5中,一个对象的channel可以在Physics下查看: 设置成…

如何确保采购过程中的产品质量

在企业采购过程中,确保采购的产品质量是至关重要的。采购的质量直接关系到企业的生产和销售质量,影响企业的形象和利润。为了确保采购过程中的质量,企业需要采取一些措施来保证采购物料和商品的质量,以下是一些有效的方法&#xf…

Linux学习-----Chapter nine

使用 ssh 服务管理远程主机9.1 配置网络服务9.1.1 配置网卡参数9.1.2 创建网络会话9.1.3 绑定两块网卡1、创建一个bond网卡2、向bond0设备添加从属网卡3、配置bond0设备的网络信息4、启动它9.2 远程控制服务9.2.1 配置sshd服务9.2.2 安全密钥验证9.2.3 远程传输命令9.3 不间断会…

日撸 Java 三百行day25-26

文章目录说明day25 二叉树深度遍历的栈实现 (中序)1.具有通用性的对象栈2.栈实现中序遍历2.1 思路2.2 代码day26 二叉树深度遍历的栈实现 (前序和后序)1.前序遍历2.后序遍历说明 闵老师的文章链接: 日撸 Java 三百行(总述)_minfanphd的博客-…

Redis第二十八讲 Redis集群脑裂数据丢失问题与集群是否完整才能对外提供服务

集群脑裂数据丢失问题 所谓的脑裂,就是指在主从集群中,同时有两个主节点,它们都能接收写请求。而脑裂最直接的影响,就是客户端不知道应该往哪个主节点写入数据,结果就是不同的客户端会往不同的主节点上写入数据。而且,严重的话,脑裂会进一步导致数据丢失。 redis的集群…

银行数字化转型导师坚鹏:银行业同业竞争策略分析

《银行业同业竞争策略分析》 —数字化背景下银行转型发展创新思维 课程背景: 数字化背景下,很多银行存在以下问题: 不清楚国内领先银行的业务发展现状? 不清楚如何制定竞争策略? 不知道其他银行转型的成功做法&…

Matplotlib学习挑战第六关--散点图、柱形图、饼图

1、Matplotlib 散点图 我们可以使用 pyplot 中的 scatter() 方法来绘制散点图。 scatter() 方法语法格式如下: matplotlib.pyplot.scatter(x, y, sNone, cNone, markerNone, cmapNone,normNone, vminNone, vmaxNone, alphaNone, linewidthsNone, *, edgecolorsNo…

【RabbitMQ】RabbbitMQ的六种工作模式以及代码实现

目录 一、交换机类型 二、简单模式 1、介绍 2、代码实现 三、Work Queues工作队列模式 1、介绍 2、代码实现 四、Pub/Sub订阅模式 1、介绍 2、代码实现 五、Routing路由模式 1、介绍 2、代码实现 六、Topics通配符模式 1、介绍 2、代码实现 一、交换机类型 在…

uniapp开发,打包成H5部署到服务器

前端使用uniapp开发项目完成后,需要将页面打包,生成H5的静态文件,部署在服务器上。 这样通过服务器链接地址,直接可以在手机上点开来访问。 打包全步骤如下: 1、修改config.js内的请求地址 需要后台部署到测试服务器上…

项目进度管理软件的应用可以解决哪些问题

项目管理工具够满足了项目经理对项目资源:时间、人员和文档的管理,同时也提高了项目的可视化和促进了团队的协作。 项目进度管理要求在规定的时间内,通过合理的进度计划,在计划执行过程中,要检查实际进度是否按计划要…

PasteSpider之项目环境-同步过滤-键值配置介绍

项目环境 在菜单项目信息项目环境 中,在PasteSpider中项目->服务->环境,也就是服务是不能运行的,得绑定环境,比如开发环境,测试环境。通过这个概念你可以实现不同得人部署不同的环境,他们之间公用同版…

ChatGPT之父:未训练GPT-5

GPT等大型语言模型带动的芯片需求飙升趋势依然没有平息的迹象,英伟达的最新版旗舰AI芯片H100近日在网上的售价已经被炒到4万多美金,反映了科技行业对训练和部署人工智能软件的需求仍未被满足。 一、商业圈 1.马斯克成立新AI公司硬刚OpenAI 当地时间4月…

大屏开发需要知道哪些知识

大屏 大屏是什么呢?再我前几年刚接触这个词得时候很新颖,全名叫态势感知大屏,大屏得特点是炫酷、好看,给用户满满得科技感。 听一位前辈说当年再招标会上,再都用exel、word做界面图表文档得时候,有一家公司…

使用MyBatis实现条件查询

文章目录一,查询需求二,打开MyBatisDemo项目三,对学生表实现条件查询(一)创建学生映射器配置文件(二)在MyBatis配置文件里注册学生映射器配置文件(三)创建学生映射器接口…