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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式技术专题「架构实践于案例分析」盘点分布式服务的(无状态有状态)认证实现方案相关的知识,希望对你有一定的参考价值。

⽆状态 vs 有状态

有状态、⽆状态是什么

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

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

有状态

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

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

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

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

有状态 vs ⽆状态

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

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

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

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

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

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

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

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

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

⽅案对⽐与选择

【分布式技术专题】「架构实践于案例分析」盘点分布式服务的(无状态\\有状态)认证实现方案_sed_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), 秘钥)

以上是关于分布式技术专题「架构实践于案例分析」盘点分布式服务的(无状态有状态)认证实现方案的主要内容,如果未能解决你的问题,请参考以下文章

分布式技术专题「架构实践于案例分析」总结和盘点目前常用分布式技术特别及问题分析

分布式技术专题「架构实践于案例分析」总结和盘点目前常用分布式技术特别及问题分析

分布式技术专题「架构实践于案例分析」总结和盘点目前常用分布式事务特别及问题分析(Seata-终)

分布式技术专题「架构实践于案例分析」总结和盘点目前常用分布式事务特别及问题分析(下)

分布式技术专题「架构实践于案例分析」总结和盘点目前常用分布式事务特别及问题分析(上)

分布式技术专题「架构实践于案例分析」总结和盘点目前常用分布式事务特别及问题分析(中)