【SA-Token】授权 鉴权中心微服务

news2024/11/27 7:25:03

授权 鉴权中心微服务
1 什么是JWT
1.2 JWT 的基本概念

1.3 JSON Web Token jwt 是一个开放标准 它定义了一种紧凑的、自包含的方式 用于作为JSON 对象在各方之间安全地传输信息

1.4.那些场景下可以考虑使用JWT ?

​ 1.用户授权 信息交换

1.5 JWT的结构及其含义

​ 1.JWT 由三个部分组成 Header、Payload Signature 且用圆点连接

​ 2.Header 由两部分(Token类型 加密算法名称)组成,并使用Base64 编码

​ 3.Payload kv形式的数据 即你想传递的数据 (授权的话就是token 信息)

​ 4.Signature 为了得到签名部分 你必须有编码过的Header 编码过的payload 一个秘钥 签名算法是Header 中指定的那个 然对它们签名即可
在这里插入图片描述
我以前的公司使用的是JWT+SpringSecurity 做的鉴权和权限中心 现在我最近公司的微服务项目采用的SA—Token 所以在该Demo 当中直接采取Sa-Token 方式 去授权和鉴权的服务

2 授权和鉴权服务设计 分为好几种方案
2.1 、全局鉴权中心

有些微服务项目弄了个全局的鉴权中心,所有微服务接收HTTP调用之后,先去全局鉴权中心验证用户的身份和权限,然后再允许用户调用微服务。
在这里插入图片描述

这种缺点 我个人认为 发送了多次http请求 其二 每个服务都与鉴权服务进行耦合 耦合度有点深,

二、BFF鉴权
BFF全称是Backends For Frontends,直译过来就是“服务于前端的后端”。 简而言之,BFF就是设计后端微服务API接口时,考虑到不同设备的需求,为不同的设备提供不同的API接口。
在这里插入图片描述
客户端不是直接访问服务器的公共接口,而是调用BFF层提供的接口,BFF层再调用基础的服务,不同的客户端拥有不同的BFF层,它们定制客户端需要的API接口。

有了BFF层之后,客户端只需要发起一次HTTP请求,BFF层就能调用不同的服务,然后把汇总后的数据返回给客户端,这样就减少了外网的HTTP请求,响应速度也就更快。

跨横切面(Cross-Cutting Concerns)的功能,需要协调更新框架升级发版(路由、认证、限流、安全),因此全部上沉,引入了 API Gateway,把业务集成度高的 BFF 层和通用功能服务层 API Gateway 进行了分层处理。

在新的架构中,网关承担了重要的角色,它是解耦拆分和后续升级迁移的利器。

在网关的配合下,单块 BFF 实现了解耦拆分,各业务线团队可以独立开发和交付各自的微服务,研发效率大大提升。

BFF的划分:

重要性
垂直业务,闭环
流量大小
另外,把跨横切面逻辑从 BFF 剥离到网关上去以后,BFF 的开发人员可以更加专注业务逻辑交付,实现了架构上的关注分离(Separation of Concerns)。

我们业务流量实际为:
移动端 -> API Gateway -> BFF -> Mircoservice

在 FE Web业务中,BFF 可以是 nodejs 来做服务端渲染(SSR,Server-Side Rendering),注意这里忽略了上游的 CDN、4/7层负载均衡(ELB)。

总结

基于服务器的身份认证
最为传统的做法 客服端存储cookie 一般是session id 服务器存储Session
Session 是每次用户认证通过以后 服务器需要创建一条记录保存用户信息 通常是在内存中 随着认证通过的用户越来越多 服务器的开销越来越大
在不同域名之前切换时 请求可能会被禁止 跨域问题
基于token方式身份认证
JWT 与Session 的差异相同点是 它们都是存储用户信息 然而Session 存在服务器端 而JWT 是在客户端
jwt 方式将用户状态分散到了客户端中 可以明显减轻服务端的内存压力
在不同域名之前切换时 请求可能会被禁止 跨域问题
基于token 与服务器身份认证
解析方式 jwt 使用算法直接解析得到用户信息 Session 需要额外的数据映射 实现匹配
jwt 只有过期时间的限制 session 保存在服务器 可控性强大
跨平台 jwt 就是一个string 可以任意传送 Session 跨平台需要一个统一解析方式
时效性 jwt一旦生成 独立存在 很难做特殊控制 Session 时效性可以由服务端控制
代码如下

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

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

相关文章

镜频抑制滤波器对射频接收前端输出噪声的影响

射频接收前端包括LNA、Filter、Mixer等部件,从噪声因子级联的角度讲,希望接收链路第一级为高增益、低噪声系数放大器,以期望得到较低的系统噪声系数,提高接收灵敏度。除LNA外,接收链路还有一个关键的部件——镜频抑制滤…

精读大型网站架构:前端架构模块化的方法及困境,自研框架Trick

模块化的方法 网页和网页之间有很多相似或者相同的模块,模块化就是把这些模块抽离并独立管理。而模块化的方法,就是把模块的HTML、CSS和JavaScript文件独立出来,然后通过某种方法关联到使用这些模块的网页上。 在介绍模块化的具体方法之前&…

consul--基础--05--api

consul–基础–05–api 1、介绍 主要接口是RESTful HTTP API,该API可以用来增删查改nodes、services、checks、configguration。所有的endpoints主要分为以下类别 kv:Key/Value存储agent:Agent控制catalog:管理nodes和serviceshe…

数据结构-例题实训作业-二叉树相关

第1关:以先序的方式建立二叉树 任务描述 本关任务:以先序的方式建立二叉树并显示(顺时针90度后看) 相关知识 为了完成本关任务,你需要掌握: 1.二叉树的概念 2.二叉树的先序遍历方式 3.二叉树的遍历。 编程要求 在以下空白处补写代码,以先序方式完成二叉树的建立。 //…

计算机组成原理浮点数表示

浮点数表示 浮点数的表示分为阶码和尾数; 比如3.026*1011;阶码是11;尾数是3.026; 对于阶码: 阶符为正,小数点向后移n位(n表示阶的大小); 阶符为负,小数点向前移n位(n表示阶的大小&a…

基础IO(上)——Linux

文章目录1.储备知识2. 文件描述符2.1 c接口2.2 直接使用系统接口2.3 open函数返回值2.4 文件描述符fd2.5 周边文件3. 重定向3.1 输出重定向3.2 输出重定向3.3 追加重定向3.4 dup4. 如何理解一切皆文件?1.储备知识 对文件的操作范畴: 在系统角度理解文件 …

R语言生物群落数据统计分析

R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂,涉及众多统计分析方法。本教学以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线,通过多个来…

中医-通过舌象判断身体状况

本文分享通过舌象判断身体的整体状况(中医角度),得出一个可供辨证的参考,并且可以根据舌象做出相关的饮食调整,本文主讲理论,相关舌象图片易引人不适,如需找相关图片,可根据本文中的…

【SpringBoot】一文了解SpringBoot配置高级

文章目录前言ConfigurationProperties使用场景小结宽松绑定/松散绑定🌕博客x主页:己不由心王道长🌕! 🌎文章说明:SpringBoot配置高级🌎 ✅系列专栏:SpringBoot 🌴本篇内容&#xff1…

javaweb JavaScript快速入门 对象 BOM DOM 事件监听

JavaScript 引入方式 1.内部脚本:将 JS代码定义在HTML页面中 2.外部脚本:将 JS代码定义在外部 JS文件中,然后引入到 HTML页面中 JavaScript 基础语法 windows.alert可以省略windows var: 1.作用域为全局变量 2.变量可以重复定义 &#xf…

半桥LLC谐振变换器及同步整流MATLAB仿真(一)

在开关电源中,LLC谐振变换器是最常见的DC-DC变换器之一。 LLC谐振电路早在上世纪80年代就已经提出,到如今仍有广泛的应用,可见其优越性。其优点表现在: 1.LLC的开关器件能实现软开关,开关损耗小 2.效率高、功率密度大 …

[附源码]计算机毕业设计JAVA 宠物医院管理系统

[附源码]计算机毕业设计JAVA 宠物医院管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybati…

计算结构体大小(内存对齐原则)struct、union、class

这篇博客详细的介绍结构体的大小sizeof:union、struct、class。 一、不同数据类型所占的内存大小: 二、union联合体的结构体大小 1、关注点: (1)联合体的大小为所有成员变量中所占字节数最大的; &#xf…

【Redis 常用五大数据类型】

常用五大数据类型 官方获取redis常见数据类型操作命令: http://www.redis.cn/commands.html 1.Redis键(key) keys * 查看当前库所有key (匹配:keys *1) exists key 判断某个key是否存在 type key 查看你的key是什么类型 del key 删除指定的key数据 unli…

springmvc1:初探springmvc

一.springmvc简介 1.springmvc是什么? ①mvc解释 m:模型层(javabean处理数据)例如pojo类 Service或Daov:视图层(页面展示数据)c:控制层(接受请求和响应浏览器&#xf…

python基于PHP+MySQL 校园二手闲置商品交易系统

每年我国都有几百万的学生参加高考,当学生接到高校的录入通知书的那一刻就要学会独立生活了,大多数学生一般都要奔袭到离家几百设置几千公里之外的地方进行求学,这对初次离开父母远离家乡求学的学子来说是人生的一次挑战。为了能够更好的适应高校的环境,他们的入校之初或者在日…

【Qt】QMainWindow |QDialog对话框

文章目录1、QMainWindow1.1 菜单栏1.2 工具栏1.3 状态栏1.4 停靠部件1.5 核心部件(中心部件)1.6 使用UI文件创建窗口1.6.1 UI设计窗口介绍1.6.2 菜单1.1.6.1 添加/删除菜单栏1.1.6.2 添加菜单1.1.6.3 添加菜单项1.1.6.4 添加多级菜单1.6.3 工具1.1.6.1 添…

机器学习入门(六)神经网络初识

目录 一、模型解释 1.1 用人脑解释 1.2 用模型解释 二、通过异或门的神经网络理解偏置量、神经网络的传播 2.1 与门的神经网络表示 2.2 或门的神经网络表示 2.3 异或门的神经网络表示 三、多物体分类 一、模型解释 1.1 用人脑解释 神经网络是模拟人的神经元&#…

Windows上的实用CMD命令

Windows上的实用CMD命令查看系统信息是x64位查看电脑基本诊断信息检查电脑支持的最大运行内存查看内存信息查看Windows电脑上次的启动时间查看显卡信息查看电脑当前的用户名查看当前的用户是不是电脑的管理员用户查看路由信息 route print查看Windows 的version申明&#xff1a…

从心灰意冷到自学Java3个月顺利拿到offer,多亏这份文档

跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽。切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来(期间也没有准备充分),到底是因为技术原因(影响自…