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

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

笔记对应学习视频:

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

Web应用去状态化设计

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

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

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

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

微服务认证方案设计

处理过程

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

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

架构风险

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值