源本科技 | 码上会

集成认证授权 - OAuth 2.0 协议

2026/05/02
39
0

引言

认证授权是计算机安全领域的两个核心概念。认证用于验证用户身份,确认访问者为其声明的合法实体;授权负责界定用户对系统各类资源的访问操作权限。这套双重安全机制相互配合,确保只有完成身份校验、且具备对应权限的用户,才能访问敏感业务数据或执行高危操作,从核心层面提升整体系统的安全防护能力。

OAuth 2.0

OAuth 协议为用户资源的授权交互,提供了一套安全、开放且轻量化的行业标准。区别于传统账号密码直接授权模式,OAuth 的核心优势在于:整个授权流程中,第三方应用无法获取用户的账号、密码等核心凭证信息。
第三方应用仅能通过标准化授权流程,按需申请用户资源的访问权限,全程隔离用户敏感账号数据,避免账号密码直接暴露给外部第三方,大幅降低数据泄露风险。

  • RFC 6749 是通用开放标准,正式定义了 OAuth 2.0 协议规范,用于实现第三方应用的安全资源授权。该规范明确了多种主流授权模式,包含授权码模式、密码模式、客户端凭证模式、隐式模式等,适配不同业务场景。OAuth 2.0 广泛落地于 Web 端、移动端各类应用,支持用户为可信第三方应用授予精细化的资源访问权限,全方位保护用户账号凭证安全。

https://datatracker.ietf.org/doc/rfc6749/

应用场景

云笔记产品作为实际案例:该产品同时提供云笔记服务、云相册服务两大核心业务,用户需要在 PC、Android、iPhone、TV、Watch 等多类终端设备上,随时访问个人笔记、相册等私有资源。若采用传统账号密码登录模式,会衍生大量安全与使用层面的问题:

  • 多业务服务独立部署,云笔记、云相册需分开登录,操作繁琐

  • 第三方平台接入时,需用户直接提交账号密码,存在极高安全隐患

  • 无法精细化管控第三方的授权范围、授权有效期,权限滥用风险高

  • 用户修改账号密码后,所有已绑定的第三方应用都会受影响,需重新授权

  • 一旦任意一个合作第三方应用被攻破,会直接造成用户账号密码批量泄露

为解决传统登录授权模式的各类弊端,OAuth 授权协议应运而生,成为跨平台、第三方接入场景的最优解。

名词解释

  • 第三方应用程序(Third-party application):也可统称为客户端,例如用户终端(PC、Android、iPhone、TV、Watch)中安装的自研 APP;或是业务中常见的 QQ、微信快捷登录场景,对于自身产品而言,QQ、微信均属于第三方登录系统。

  • HTTP 服务提供商:提供核心业务服务的平台,本文案例中的云笔记产品、主流社交平台 QQ、微信等,都属于服务提供商范畴。

  • 资源所有者(Resource Owner):即系统最终使用用户,也是各类私有资源的归属者。

  • 用户代理(User Agent):代用户发起网络访问的载体,最典型的载体为浏览器,负责转发用户请求、完成页面交互。

  • 认证服务器(Authorization Server):服务提供商独立部署、专门负责身份校验的服务器,核心能力为账号密码验证、身份识别、权限初步分配,统一处理登录认证逻辑。

  • 资源服务器(Resource server):集中存储、管理用户私有业务资源的服务器,负责笔记、图片、文件等资源的存储与读取。认证服务器与资源服务器可合并部署在同一服务节点,也可拆分独立部署;简单来说,资源服务器是所有用户业务资源的统一访问入口,如云笔记服务、云相册服务。

Spring Security

Spring Security 是一款主流的企业级安全框架,前身为 Acegi Security,专为 Spring 生态应用提供声明式安全访问控制能力。框架底层基于 Servlet 过滤器、IoC(控制反转)、AOP(面向切面编程)等核心技术实现,封装了完整的身份认证、权限授权、防护拦截等通用能力。通过切面与依赖注入的设计思想,有效解耦业务代码与安全控制逻辑,规避重复编写安全校验代码的问题,大幅提升企业级项目的开发效率与安全稳定性。

交互过程

OAuth 2.0 在客户端与服务提供商之间,新增独立的授权层作为中间隔离层。客户端无法直接使用用户账号密码登录服务提供商,所有资源访问请求必须经过授权层校验,从架构层面隔离用户与第三方客户端,杜绝凭证直接交互。

客户端最终用于资源访问的身份凭证为令牌(Token),与用户原始账号密码完全独立。用户可自主配置令牌的访问权限范围、有效时长,实现权限精细化管控。当客户端通过授权层完成合法授权后,服务提供商会依据令牌中约定的权限范围、有效期,合规开放用户私有资源,完成安全的数据交互。