
微服务网关整合 OAuth2.0 的流程,简单说就是 “网关当门卫,令牌当通行证,授权服务器当发证机关”,用生活化的步骤拆解如下:
1. 用户第一次请求:没带 “通行证”(Token)
- 用户(或 APP)想访问微服务(比如查订单),请求先到网关。
- 网关一看:“没带通行证啊?去授权服务器办一个!” 然后让用户跳转到登录页(比如输入账号密码,或微信授权)。
2. 办 “通行证”(获取 Token)
- 用户在登录页完成验证(比如输对密码,或点了 “允许授权”)。
- 授权服务器确认:“是本人,没问题!” 然后发一个 “通行证”(Access Token,类似临时门禁卡)给用户。
- 用户拿到 “通行证”,重新带着它访问网关。
3. 网关检查 “通行证”
- 网关收到带 “通行证” 的请求,先去问授权服务器:“这通行证是真的吗?没过期吧?”
- 授权服务器回复:“真的,有效!” 网关才放行。
4. 网关 “翻译” 通行证,转发请求
- 网关把 “通行证” 里的信息(比如用户是谁、能访问哪些功能)解析出来,写在 “便签” 上(附加到请求里)。
- 然后把请求转发给对应的微服务(比如订单服务),并附上 “便签”。
5. 微服务最终判断权限
- 微服务看了 “便签”,知道用户是谁、有什么权限,再根据自己的规则判断:“这个人确实能查这个订单”,就返回数据;如果没权限,就拒绝。
一句话总结:
用户先去 “授权服务器” 办 “通行证”,每次访问都带着通行证过 “网关” 这道岗,网关确认通行证有效后,告诉后面的微服务 “这人是谁、能干嘛”,最后微服务决定给不给数据。
官方一点说:
微服务网关整合 OAuth 2.0 的核心设计思路是以网关为统一入口,实现身份认证与权限校验的集中化管控,同时解耦各微服务与认证逻辑,提升系统安全性与可维护性。结合图示流程,可从以下几个关键环节梳理设计逻辑:
一、核心角色与分工
- 前端服务器(Client):作为 OAuth 2.0 中的 “客户端”,负责接收用户请求(如 APP、Web 端、第三方调用),并向授权服务发起认证请求。
- 网关:微服务的统一入口,承担请求路由、Token 转发与解析、权限初步校验等核心职责,是 OAuth 2.0 流程的 “交通枢纽”。
- 授权服务:OAuth 2.0 的 “授权服务器 + 认证逻辑载体”,负责验证用户身份、生成 / 校验 Access Token。
- 微服务(商品服务、订单服务等):OAuth 2.0 中的 “资源服务器”,最终提供业务资源,需基于解析后的 Token 做细粒度权限验证(如订单服务判断用户是否有权限查看某订单)。
二、流程分步解析(对应图示步骤)
步骤 1:网关触发认证请求
当用户(或第三方)通过前端服务器发起业务请求(如 “查询商品详情”“创建订单”)时,请求先到达网关。若网关检测到请求无有效 Access Token(或 Token 已过期),则主动向授权服务发起 “请求授权服务认证” 的调用,触发 OAuth 2.0 认证流程。
步骤 2:授权服务验证登录用户
授权服务接收到网关的认证请求后,执行用户身份验证:
- 若用户未登录,跳转至登录页(或要求前端引导用户完成 OAuth 2.0 授权流程,如第三方登录的 “微信授权页”);
- 若用户已登录(或通过 OAuth 2.0 授权流程完成身份确认),授权服务确认用户身份合法性。
步骤 3:授权服务返回 Access Token
用户身份验证通过后,授权服务生成Access Token(包含用户身份、权限范围等信息,通常为 JWT 格式,便于网关和微服务解析),并将 Token 返回给网关。
步骤 4:前端服务器携带 Token 访问资源
前端服务器(Client)从网关获取到有效 Access Token 后,后续的业务请求会携带该 Token(通常放在 HTTP Header 的 Authorization 字段,如 Bearer <Access Token>),再次通过网关访问目标微服务。
步骤 5:网关校验 Token
网关接收到携带 Token 的请求后,先向授权服务发起 “校验 Token” 的调用,验证 Token 的有效性(是否伪造、是否过期、签名是否合法)。若 Token 无效,网关直接拦截请求,返回 “未授权”;若 Token 有效,进入下一步。
步骤 6:网关解析 Token 并转发请求
Token 校验通过后,网关对 Token 进行解析(若为 JWT,可直接解码出 payload 中的用户信息、权限范围等),并将解析后的明文 Token 信息(如用户 ID、角色、权限标识)附加到请求中(如放入 HTTP Header 的自定义字段),再转发请求到目标微服务(如商品服务、订单服务)。
步骤 7:微服务解析并验证用户权限
微服务接收到网关转发的请求(已附加明文 Token 信息)后,基于自身的业务权限规则,验证用户是否有访问当前资源的权限:
- 商品服务:判断用户是否有权限查看该商品(如是否为会员、是否在商品可见范围);
- 订单服务:判断用户是否有权限操作该订单(如是否为订单所有者)。若权限验证通过,返回业务数据;否则,返回 “权限不足”。
三、核心设计价值
- 集中化认证与权限校验:网关和授权服务承担了 “大部分认证与 Token 校验工作”,各微服务无需重复实现认证逻辑,降低了系统冗余与维护成本。
- 解耦与扩展性:微服务只需关注 “自身业务权限”,无需关心 “用户如何认证”;若需新增认证方式(如接入新的第三方登录),只需扩展授权服务,不影响微服务。
- 安全性提升:网关作为统一入口,可拦截非法请求(如无效 Token),减少微服务直接暴露在外部的风险;Token 解析与校验的集中化,也降低了 Token 泄露、伪造的风险。
- 流量管控与审计:网关可基于 Token 信息做流量控制(如限制某用户 / 角色的请求频率),也可记录请求日志,便于后续审计与问题排查。

1792

被折叠的 条评论
为什么被折叠?



