首页 > 其他分享 >【分布式技术专题】「架构实践于案例分析」盘点分布式服务的(无状态\有状态)认证实现方案

【分布式技术专题】「架构实践于案例分析」盘点分布式服务的(无状态\有状态)认证实现方案

时间:2022-11-07 16:35:31浏览次数:45  
标签:状态 based 请求 Base64 分布式服务 access Token 分布式

⽆状态 vs 有状态

有状态、⽆状态是什么

  • 有状态:服务器端需要保存请求的相关信息,每个请求可以默认地使⽤以前的请求信息
  • ⽆状态:服务器端不记录请求的相关信息,服务器处理的内容完全来⾃请求所携带的信息,以及其他服务器端⾃身所保存的、并且可以被所有请求所使⽤的公共信息

【分布式技术专题】「架构实践于案例分析」盘点分布式服务的(无状态\有状态)认证实现方案_nginx

有状态

使⽤粘性会话,即:对相同IP的请求,NGINX总会转发到相同的Tomcat实例,这样就就⽆需图中的Session Store了。不过这种⽅式有很多缺点:⽐如⽤户断⽹重连,刷新⻚⾯,由于IP变了,NGINX会转发到其他Tomcat实例,⽽其他实例没有Session,于是就认为⽤户未登录。这让⽤户莫名其妙,⽤得越来越少了。

【分布式技术专题】「架构实践于案例分析」盘点分布式服务的(无状态\有状态)认证实现方案_sed_02

⽆状态
  • 解密Token即可拿到⽤户信息;事实上要看你项⽬的具体实现;有时候Token⾥不⼀定带有⽤户信息;⽽是利⽤Token某个地⽅查询,才能获得⽤户信息
  • 客户端传过来的也不⼀定是Token,⽽是⼀个Cookie

【分布式技术专题】「架构实践于案例分析」盘点分布式服务的(无状态\有状态)认证实现方案_服务器端_03

有状态 vs ⽆状态

【分布式技术专题】「架构实践于案例分析」盘点分布式服务的(无状态\有状态)认证实现方案_nginx_04

外部⽆状态,内部有状态”⽅案

外部依然针对于Token进行传递到API网关服务,之后进行相关的微服务执行处理,并且后端采用的是将统一化的Session Store的存储介质,之后,可以实现即使是无状态化的服务架构,这个目前使用的较多。

【分布式技术专题】「架构实践于案例分析」盘点分布式服务的(无状态\有状态)认证实现方案_nginx_05

外部⽆状态,内部有状态”⽅案(新老服务兼容)

通过将请求头,可以实现将有状态和无状态的服务均一视同仁,采用head的头进行分析和转发处理新服务和老服务。

【分布式技术专题】「架构实践于案例分析」盘点分布式服务的(无状态\有状态)认证实现方案_sed_06

⽹关认证授权,内部裸奔”⽅案

【分布式技术专题】「架构实践于案例分析」盘点分布式服务的(无状态\有状态)认证实现方案_服务器端_07

⽅案对⽐与选择

【分布式技术专题】「架构实践于案例分析」盘点分布式服务的(无状态\有状态)认证实现方案_nginx_08

授权

访问控制模型

  • Access Control List (ACL)
  • Role-based access control (RBAC)
  • Attribute-based access control (ABAC)
  • Rule-based access control
  • Time-based access control

RBAC

用户模型、角色模型、权限模型

【分布式技术专题】「架构实践于案例分析」盘点分布式服务的(无状态\有状态)认证实现方案_服务器端_09

JWT

JWT全称Json web token,是⼀个开放标准(RFC 7519),⽤来在各⽅之间安全地传输信息。JWT可被 验证和信任,因为它是数字签名的

JWT由三部分组成:第⼀部分是Header,第⼆部分是Payload,第三部分是Signature

【分布式技术专题】「架构实践于案例分析」盘点分布式服务的(无状态\有状态)认证实现方案_sed_10

  • Token = Base64(Header).Base64(Payload).Base64(Signature)
  • Signature = Header指定的签名算法(Base64(header).Base64(payload), 秘钥)

标签:状态,based,请求,Base64,分布式服务,access,Token,分布式
From: https://blog.51cto.com/alex4dream/5827463

相关文章

  • 线程状态
    线程状态线程停止推荐线程自己停下来建议使用一个标志位进行终止变量当flag=false,则线程终止publicclassTestStopimplementsRunnable{//1.设置一个标识位(线......
  • 初识微服务(技术栈、单体、分布式架构)、SpringCloud
    (目录)微服务技术栈从单体架构过度到微服务架构,需要一系列中间技术支撑,其中重要的部分包括:注册中心:Eureka、Zookeeper、Nacos服务网关:Zuul、Gateway微服务远程调......
  • 我把分布式音乐播放器适配了Stage模型
     OpenAtomOpenHarmony(以下简称“OpenHarmony”)应用开发自API8及其更早版本一直使用的是FA模型进行开发。FA模型是FeatureAbility的缩写,它和PA(ParticleAbility)两种类型......
  • Jmeter分布式压测
     一、原因1、当你想并发很大的时候(比如3000)那么一台jmeter可能就不能胜任了,这时候就需要多台jmeter同时加压2、当jmeter压力机安装在没有gui的linux上,又不想通过非......
  • HTTP常用返回结果状态码
    摘编自《图解HTTP》HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。状态码的职责是当客户端向服务器端发送请求时,描......
  • Jmeter 分布式 运行时异常linux 命令统计
    1,强行结束程序ps-ef|grepjava|awk'{print$2}'|xargskill-9;ps-ef|grepthirdparty|awk'{print$2}'|xargskill-9;2,清除缓存echo3>/proc/sys/vm/d......
  • DRF中后台返回不同状态,前端展示不同状态样式
    后端classAuctionModelSerializer(serializers.ModelSerializer):status=serializers.SerializerMethodField()items=serializers.SerializerMethodField(......
  • SpringCloud_Alibaba(分布式事务)
    1、Seata简介Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务http://seata.io/zh-cn/分布式事务处理过程唯一ID+......
  • 【博学谷学习记录】超强总结,用心分享 。分布式缓存
    分布式缓存--基于Redis集群解决单机Redis存在的问题单机的Redis存在四大问题:1.数据丢失问题:实现Redis数据持久化2.并发能力问题:搭建主从集群,实现读写......
  • 分布式架构碎片
    转载:https://www.cnblogs.com/imyalost/p/15318976.html异地多活定义:广域的分布式架构;目的:容量扩展,资源弹性;实质:多个不同地域不同规模的数据中心;收益:更强的容灾能力,用......