当前位置: 首页 > news >正文

分布式系统的认证授权

一.分布式系统的认证授权大致架构

以云音乐系统为例:

注:一般情况下,我们会把认证的部分的接口提取为一个单独的认证服务模块中。

二.单点登录(Single Sign On)

单点登录,Single Sign On,简称为 SSO。

SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
就比如说淘宝和天猫是两个系统,但有了单点登录统一认证后,我们在登录淘宝后,发现天猫也可以自动登录使用。

这样用户只需要认证一次便可以在多个拥有访问权限的系统服务中访问,提高了用户体验性。这个功能就叫做单点登录。

简单说就是原来每个系统都需要一个认证服务,现在把这些认证服务集中在一个系统服务中统一认证即可。

三.使用JWT(JSON Web Token)

【1】JWT简单说就是一串JSON字符串,一串经过加密的签名密钥,里面包含了用户的身份信息。相比于基于session的传统方法,使用JWT我们可以无状态认证。

【2】传统的基于session的方式是有状态认证,用户登录成功将用户的身份信息存储在服务端,并且加大了服务端的存储压力。
并且校验令牌需要远程请求认证服务,客户端的每次访问都会远程校验,执行性能低,这种方式不适合在分布式系统中应用。

虽然有Session复制、Session黏贴等解决问题的方式,但是并不好用。

【3】使用JWT我们可以无状态认证。JWT能够让资源服务自己校验令牌的合法性将省去远程请求认证服务的成本,提高了性能,并且节省了存储的成本。

用户认证通过后会得到一个JWT令牌,JWT令牌中已经包括了用户相关的信息,客户端只需要携带JWT访问资源服务,资源服务根据事先约定的算法自行完成令牌校验,无需每次都请求认证服务完成授权。

四.引入网关

【1】一般微服务都会使用网关。之前我们是在每个服务中进行认证和授权,而认证部分是每个服务都共有的,完全可以将这个操作放在网关中完成。

在网关中进行用户身份的认证可以将很多非法的请求拦截到微服务之外,这叫做网关认证。

【2】网关的职责:

1、网站白名单维护

针对不用认证的URL全部放行。

2、校验jwt的合法性。

除了白名单剩下的就是需要认证的请求,网关需要验证jwt的合法性,jwt合法则说明用户身份合法,否则说明身份不合法则拒绝继续访问。

【3】网关不负责授权,对请求的授权操作在各个微服务进行,因为微服务最清楚用户有哪些权限访问哪些接口。

http://www.lryc.cn/news/238734.html

相关文章:

  • TVS瞬态抑制二极管的工作原理和特点?|深圳比创达电子EMC
  • csdn - mermaid
  • C题目11:数组a[m]排序
  • 编译器安全
  • docker部署gitlab 12.10.6过程
  • 单例设计模式是什么?什么是 Singleton 单例设计模式?Python 单例(单件)设计模式示例代码
  • Redis跳跃表
  • C++基础从0到1入门编程(二)
  • Uniapp扫码预览连接地址与手机不在同一网段
  • 万界星空科技SMT行业生产管理MES系统解决方案
  • vue3 uniapp h5 安卓和iOS开发适配踩坑记录
  • inf和nan
  • 十. Linux关机重启命令与Vim编辑的使用
  • Spring-IOC-@Value和@PropertySource用法
  • 如何理解Python中一切皆对象?
  • 【如何学习Python自动化测试】—— 鼠标键盘操作
  • 随笔-事儿就这么个事儿
  • django理解03 数据库引入
  • Jtti:windows中apache怎么实现负载均衡
  • 2311rust,到43版本更新
  • 前端埋点上报的几种方式
  • 外部 prometheus监控k8s集群资源
  • centos安装神通数据库
  • 汇编-PUSHFD和POPFD标志寄存器值压栈和出栈
  • 基于SSM的进销存管理系统设计与实现
  • Django DRF限流组件
  • UEC++ day7
  • win11,安装python,pip,和opencv
  • kafka入门(一):kafka消息发送与消费
  • CMap数据库筛选化学药物