
很多人存在一个常见误区认为 JWT 和 OAuth2 是竞争关系。事实上两者并非对立而是互补关系OAuth2 负责授权流程JWT 则作为令牌格式用于在授权后传递身份信息。一、鉴权认证技术选型与作用场景技术核心定位解决的问题典型场景选型建议JWT令牌格式 / 无状态凭证如何在服务间安全传递用户身份且服务端无需存储 Session前后端分离、微服务间传递用户身份、API 网关鉴权微服务标配但需配合黑名单/短期过期解决注销问题OAuth2授权协议如何让第三方应用在不获取用户密码的前提下访问用户资源第三方登录微信/QQ/GitHub、开放平台 API 授权涉及第三方授权时必选单纯内部系统不必引入OIDC身份认证协议OAuth2 只授权不认证如何获取用户身份信息用户登录、SSO 单点登录、获取用户 Profile需要“登录”功能时OIDC 是 OAuth2 的标准补充RBAC权限模型如何按“角色”批量分配权限避免逐个用户配置后台管理系统、企业内部系统、SaaS 多租户权限模型的基础80% 场景够用ABAC权限模型RBAC 角色爆炸如何按“属性”动态授权数据权限本部门/本人、动态规则时间/地点/IPRBAC 不够用时升级适合复杂数据权限场景ReBAC权限模型如何表达“谁拥有什么”“谁和谁有关”的关系型权限云盘、文档协作、社交关系、组织架构继承关系型权限场景可参考 Google Zanzibar 模型mTLS网络层身份认证服务间通信如何互相验证身份防止中间人攻击K8s Istio 服务网格、零信任架构、金融级内网服务网格标配替代 JWT 在服务间的传递Private Key JWT客户端强认证Client Secret 太弱如何更强地验证客户端身份高安全场景的 OAuth2 客户端认证替代简单 Secret适合金融、医疗等高安全要求SSO单点登录方案多个系统如何一次登录、处处通行企业内部多系统、SaaS 多产品线基于 OIDC/CAS 实现减少重复登录CAS单点登录协议老牌 SSO 协议如何集中管理登录高校、传统企业内网老项目常见新项目优先 OIDC二、按场景选型决策表业务场景推荐组合理由后台管理系统内部JWT RBAC用户量小角色固定RBAC 足够SaaS 多租户系统OAuth2 OIDC RBAC ABAC需要第三方登录 多租户数据隔离 精细权限开放平台第三方接入OAuth2 OIDC JWT第三方授权 用户身份 令牌传递微服务内部调用JWT mTLSJWT 传用户身份mTLS 保证服务间通信安全K8s Istio 服务网格mTLS JWTmTLS 做服务间身份JWT 做用户级鉴权数据权限本部门/本人RBAC ABAC角色控制功能权限属性控制数据权限文档协作 / 云盘ReBAC权限继承自文件夹/组织关系企业 SSO 单点登录OIDC SSO一次登录多系统通行金融核心系统OAuth2 OIDC mTLS Private Key JWT高安全要求多层防护小程序 / App 登录OAuth2 OIDC JWT微信/手机号登录 令牌传递三、鉴权认证分层架构文字版text┌─────────────────────────────────────────────────────────────┐ │ 用户层User │ │ 用户登录 → OIDC认证→ 获取 id_token access_token │ ├─────────────────────────────────────────────────────────────┤ │ 网关层Gateway │ │ API 网关 → JWT 校验 → 解析用户身份 → 转发请求 │ │ → OAuth2 校验第三方授权场景 │ ├─────────────────────────────────────────────────────────────┤ │ 服务层Service │ │ 服务间调用 → mTLS服务身份 JWT用户身份 │ │ 业务鉴权 → RBAC功能权限 ABAC数据权限 ReBAC关系 │ ├─────────────────────────────────────────────────────────────┤ │ 数据层Data │ │ 数据行级权限 → ABAC属性过滤 / ReBAC关系过滤 │ └─────────────────────────────────────────────────────────────┘四、各技术核心作用一句话总结技术一句话作用JWT无状态令牌服务间传递用户身份OAuth2第三方授权不暴露密码即可访问资源OIDC基于 OAuth2 的身份认证用于登录RBAC按角色分配权限权限模型基础ABAC按属性动态授权解决数据权限ReBAC按关系授权解决权限继承mTLS服务间双向证书认证零信任基础Private Key JWT客户端强认证替代 Client SecretSSO一次登录多系统通行CAS老牌 SSO 协议传统企业常用五、选型核心原则认证与授权分离OAuth2 管授权OIDC 管认证JWT 管传递。权限模型分层RBAC 打底ABAC 补数据权限ReBAC 补关系权限。网络层与服务层分离mTLS 管服务间身份JWT 管用户身份。按需引入内部系统 JWT RBAC 足够不必上 OAuth2 OIDC ABAC 全家桶。安全等级匹配金融级加 mTLS Private Key JWT普通业务 JWT RBAC 即可。