网关鉴权

简介: 微服务架构下,用户身份校验需统一处理。基于JWT的网关鉴权将认证集中于网关,避免密钥泄露与代码重复。网关校验Token并透传用户信息,微服务专注权限控制,通过Spring Security注解如`hasAuthority`实现细粒度授权,提升安全与可维护性。(238字)

单体架构时我们只需要完成一次用户登录、身份校验,就可以在所有业务中获取到用户信息。而微服务拆分后,每个微服务都独立部署,不再共享数据。也就意味着每个微服务都需要做身份校验,这显然不可取。
我们的登录是基于JWT来实现的,校验JWT的算法复杂,而且需要用到密钥。如果每个微服务都去做身份校验,这就存在着两大问题:
● 每个微服务都需要知道JWT的密钥,不安全。
● 每个微服务重复编写身份校验代码、权限校验代码,代码重复不易维护。
既然网关是所有微服务的入口,一切请求都需要先经过网关。我们完全可以把身份校验的工作放到网关去做,这样之前说的问题就解决了:
● 只需要在网关和用户服务保存秘钥
● 只需要在网关开发身份校验功能
网关鉴权是指在网关对请求进行身份验证的过程。这个过程确保只有经过授权的用户或设备才能访问特定的服务或资源。
流程如下:

  1. 用户登录成功生成token并存储在前端
  2. 前端携带token访问网关
  3. 网关解析token中的用户信息,网关将请求转发到微服务,转发时携带用户信息
  4. 微服务从http头信息获取用户信息
  5. 微服务之间远程调用使用内部接口(无状态接口,即后端微服务集群都不做权限校验)
    网关鉴权除了验证token的合法性还有一层含义是校验用户的权限,通常校验用户的权限不放在网关而是放在微服务去实现,因为具体的接口在微服务,在token中包括了用户的权限字符串,微服务接收到权限字符串通过spring security框架进行拦截实现,具体的方案就是在controller接口上通过下边的注解实现:
    hasAuthority('authority'): 检查是否有指定的权限(authority),这通常与数据库中的权限字符串对应,可通过AI学习spring security框架(当然我们中州就已经学了,所以这块就很明晰):
    AI:spring security授权注解有哪些
    AI:@PreAuthorize("hasRole('ADMIN')") 除了hasRole还有哪些
相关文章
|
17天前
|
消息中间件 存储 Java
消息队列选型终极指南:Kafka、RocketMQ、RabbitMQ 底层原理与场景化选型全解
本文深度解析消息队列核心原理与三大主流MQ(RabbitMQ、RocketMQ、Kafka)的架构、特性、代码实现及选型策略。涵盖异步解耦、流量削峰、数据分发三大价值,At-most/least/exactly-once投递语义,推拉模式差异,事务消息实现对比,并提供场景化选型指南与生产避坑实践。
225 1
|
5月前
|
人工智能 自然语言处理 搜索推荐
阿里云 AI 搜索 DeepSearch 技术实践
阿里云OpenSearch LLM版推出DeepSearch技术,实现从RAG 1.0到RAG 2.0的升级。基于多智能体协同架构,支持复杂推理、多源检索与深度搜索,显著提升问答准确率,助力企业智能化升级。
1126 23
|
10月前
|
人工智能 JSON 安全
Spring Boot实现无感刷新Token机制
本文深入解析在Spring Boot项目中实现JWT无感刷新Token的机制,涵盖双Token策略、Refresh Token安全性及具体示例代码,帮助开发者提升用户体验与系统安全性。
1049 4
|
4月前
|
安全 微服务
网关过滤器
网关鉴权需在请求转发前完成。通过理解Gateway原理,利用GlobalFilter或GatewayFilter,在NettyRoutingFilter之前执行身份校验,实现安全控制。过滤器通过pre逻辑拦截请求,确保鉴权通过后才路由至微服务,保障系统安全。
|
4月前
|
安全 算法 Java
内置过滤器
Spring Cloud Gateway内置多种GatewayFilter,用于请求路由、过滤与响应处理,如AddRequestHeader、StripPrefix等,可灵活实现路径重写、请求限流等功能,结合路由配置满足各类微服务场景需求。
|
SQL 关系型数据库 MySQL
在 MySQL 中使用 Exists
【8月更文挑战第11天】
2170 0
在 MySQL 中使用 Exists
|
存储 缓存 API
无需登录+离线调试,Apipost完胜Apifox?
在API调试工具领域,强制登录与离线支持的优劣一直备受关注。本文以Apipost和Apifox为例,通过三组实验对比两者在快速调试、断网环境及敏感接口调试中的表现。Apipost凭借游客模式和本地存储策略,实现无需登录即可调试,断网状态下功能正常,且保护用户隐私;而Apifox则因强制云端授权,在无网络或敏感数据场景下表现受限。最终,Apipost以更小的安装包、更快的启动速度和明确的隐私承诺胜出,为开发者提供更大自由度。
842 25
无需登录+离线调试,Apipost完胜Apifox?
|
搜索推荐 NoSQL 关系型数据库
COLA架构
COLA架构
4839 0
COLA架构
|
存储 数据库 监控
|
存储 安全 数据库
从内到外,彻底搞懂sa-token和Oauth2.0的防线
从内到外,彻底搞懂sa-token和Oauth2.0的防线
2433 0

热门文章

最新文章