Spring Cloud Alibaba#26.微服务认证方案

本文讲解微服务中基于自定义用户中心如何实现JWT认证

笔记对应学习视频:

https://www.itlaoqi.com/chapter/2668.html

Web应用去状态化设计

  • 微服务体系下避免服务出现状态,在负载均衡分配下,如果登录用户等信息存在服务节点Session中,会产生会话一致性问题

Spring Cloud Alibaba#26.微服务认证方案

  • 解决会话一致性的三种方案
    • Session复制
      • 代码零更改
      • 依托Tomcat特性实现
      • 少量节点下可以使用
      • 多节点下复制性能指数下降
      • 内存浪费严重

Spring Cloud Alibaba#26.微服务认证方案

    • 后端统一存储
      • 快速部署,技术成熟
      • 支持高并发,不存在一致性问题
      • 增加新的通讯,架构复杂性增加
      • 应用场景
        • 传统大集群应用的升级改造

Spring Cloud Alibaba#26.微服务认证方案

    • 客户端存储
      • 服务端完全无状态
      • 无需添加任何额外组件,架构复杂性降低
      • 程序改造大
      • 信息泄露问题
      • 每次请求包含会话数据,占用带宽
      • 典型方案: Json Web Token(JWT)
      • 应用场景:
        • 前后端分离,微服务架构

Spring Cloud Alibaba#26.微服务认证方案

微服务认证方案设计

Spring Cloud Alibaba#26.微服务认证方案

处理过程

  • 1.用户在客户端输入用户名/密码等身份信息,通过微服务网关转发到认证中心进行用户信息的验证,如验证通过,认证中心会返回给客户端Token令牌
  • a.Token是一个可以被加密/解密的、包含用户信息的、有时效性的字符串
  • b.例如:

Spring Cloud Alibaba#26.微服务认证方案

  • 2.客户端获取到Token就认为用户登录成功,并将Token保存在客户端本地,之后每一次发送请求是将Token附加在请求Header/Cookie中发往后端微服务
  • 3.微服务收到客户端请求后,第一件事便是对Token进行验证有效性
    • a.验证通过提取Token中包含的用户信息进行后续业务处理
    • b.验证失败直接返回Token异常信息.

架构风险

  • 如果Token在传输过程中被劫持,会存在被冒名顶替的风险
    • 增加底层网络安全性,使用SSL提高网络传输安全性,客户端要求安装防火墙/木马与病毒扫描软件
  • 每个微服务都要持有解密用的秘钥字串,如秘钥字串失窃,关键信息会被泄露
    • 引入配置中心,集中对秘钥等敏感信息统一管理

相关文章:

  • 2021-11-28
  • 2021-09-04
  • 2021-12-14
  • 2021-07-06
  • 2021-12-28
  • 2022-01-24
  • 2021-11-28
  • 2021-12-14
猜你喜欢
  • 2019-12-20
  • 2020-02-27
  • 2021-10-18
  • 2022-12-23
  • 2021-06-27
  • 2021-11-14
相关资源
相似解决方案