如何设计微服务统一认证中心

认证中心简介

单体应用体系下,应用是一个整体,一般针对所有的请求都会进行权限校验。请求一般会通过一个权限的拦截器进行权限的校验,在登录时将用户信息缓存到Session 中,后续访问则从缓存中获取用户信息。

而微服务架构下,一个应用会被拆分成若干个微应用,每个微应用都需要对访问进行鉴权,每个微应用都需要明确当前访问用户以及其权限。尤其当访问来源不只是浏览器,还包括其他服务的调用时,单体应用架构下的鉴权方式就不是特别合适了。

。 认证中心方案所有请求都通过网关,从而有效隐藏微服务;基于Token,服务端无状态,性能较好,支持移动设备,支持跨程序调用;基于OAuth2.0,简单,安全,开放。

认证中心原理

OAuth2

OAuth是一种开放的协议,为桌面程序或者基于 BS的web应用提供了一种简单的,标准的方式去访问需要用户授权的 API 服务。

  1. 简单:不管是 OAuth 服务提供者还是应用开发者,都很容易于理解与使用;
  2. 安全:没有涉及到用户密钥等信息,更安全更灵活;
  3. 开放:任何服务提供商都可以实现 OAuth,任何软件开发商都可以使用 OAuth

OAuth2认证协议流程

为什么使用JWT?

随着技术的发展,分布式应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢发展成为token的方式做登录身份校验,然后通过token去取redis中的缓存的用户信息。随着之后jwt的出现,校验方式更加简单便捷化,无需通过redis缓存,而是直接根据token取出保存的用户信息,以及对token可用性校验,单点登录更为简单。

Json Web Token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。

JWT由三段信息构成:第一段为头部(Header),第二段为载荷(Payload),第三段为签名(Signature)。每一段内容都是一个 JSON 对象,将每一段 JSON 对象采用 BASE64 编码,将编码后的内容用. 点链接一起就构成了 JWT 字符串。

头部(Header):头部用于描述关于该 JWT 的最基本的信息,例如其类型以及签名所用的算法等。这也可以被表示成一个 JSON 对象。{"typ": "JWT","alg": "HS256"}

载荷(Payload):载荷就是存放有效信息的地方。有效信息包含标准的声明、公共的声明、私有的声明。

**签名( Signature ):**使用 Base64 编码后的 Header 和 Payload 以及一个秘钥。将 base64 加密后的 Header 和 Base64 加密后的 Payload 使用. 连接组成的字符串,通过 Header 中声明的加密方式进行加盐 secret 组合加密。

Spring Security

Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。

一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。

用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。 用户授权指的是验证某个用户是否有权限执行某个操作

认证中心设计


推荐阅读

  1. 如何设计微服务统一认证中心
  2. 云计算中实施身份和访问管理(IAM)架构的最佳实践
  3. 粒度数据权限控制框架
相关推荐
GlobalInfo3 小时前
2026年机器人多指灵巧手市场分析报告——涵盖行业调查、趋势分析与发展前景
大数据·人工智能·microsoft·微服务·机器人
代码山河3 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
微订校园外卖平台4 小时前
校园外卖平台选模板还是定制:架构、数据流与验收清单
大数据·架构·外卖系统·本地生活·微订
ZhengEnCi6 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
Decay__6 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
阿里云云原生9 小时前
Agent 数据飞轮平台的选型和实践
云原生
华普微HOPERF9 小时前
Matter协议架构详解:数据模型与交互模型深度解析
microsoft·架构·交互
做运维的阿瑞10 小时前
云项目可观测性与成本治理:告警、日志、Dashboard 与预算标签
大数据·云原生·云计算·terraform
4SAPI11 小时前
多国产模型混合调度与企业级治理生产选型指南:4SAPI、硅基流动与 OpenRouter 的架构权衡
大数据·人工智能·架构·php
无人生还别怕11 小时前
如何搭建k8s服务(containerd部署)
linux·云原生·容器·kubernetes·openanolisos