"小崔说:'用户抱怨又要注册一个新账号,能不能直接用微信登录?'白歌说:'OAuth2 就是来解决这个问题的——用户通过微信授权,我们拿到 Token 就能识别身份,全程不碰用户密码。'这一章,你将掌握 OAuth2 协议的核心机制及 Spring Security 的 Client 与 Resource Server 实现。"
章节导读:OAuth2 与第三方登录
本章定位
本章解决的核心问题:OAuth2 如何通过授权服务器将用户认证与资源访问解耦,以及 Spring Security 如何实现 OAuth2 Client(第三方登录)和 OAuth2 Resource Server(资源保护)。
学习路线图
学习顺序说明:先理解 OAuth2 协议的核心概念(四大角色、授权码流程、Token 类型)→ 掌握 OAuth2 Client:Spring Security 如何作为客户端接入微信/GitHub/Google 等授权服务器 → 理解 OAuth2 Resource Server:如何保护 REST API,校验传入的 Access Token → 最后通过第三方登录配置实战,将微信/QQ 登录集成到飞翔科技的学生成绩管理系统。
文件关系说明
| 文件 | 一句话角色 |
|---|---|
OAuth2基础.md | OAuth2 协议核心:四大角色(Resource Owner/Client/Authorization Server/Resource Server)、授权码流程、Token 类型与 Scope 机制。 |
OAuth2_Client.md | OAuth2 客户端:Spring Security 作为客户端应用,通过授权码流程获取 Access Token,支持微信/GitHub/Google 等第三方登录。 |
OAuth2_Resource_Server.md | OAuth2 资源服务器:保护 REST API,校验 JWT 或不透明 Token,提取用户身份与权限。 |
第三方登录配置.md | 实战配置:微信/QQ 登录的 ClientRegistration、Redirect URI、UserInfo Endpoint 配置与用户信息映射。 |
知识图谱
核心逻辑:OAuth2 将用户认证委托给授权服务器(如微信),第三方应用(飞翔科技)永远接触不到用户密码。授权码流程是标准安全流程:应用请求授权 → 用户在授权服务器确认 → 授权服务器返回授权码 → 应用用授权码换取 Access Token → 应用携带 Token 访问资源服务器。Spring Security 5.x 内置了 OAuth2 Client 和 Resource Server 支持,Client 负责接入第三方登录,Resource Server 负责保护 API 端点。
与上下章的衔接
上一章回顾:你掌握了 JWT 无状态认证——服务端通过 Token 自包含信息实现无 Session 认证。OAuth2 授权服务器颁发的 Access Token 通常就是 JWT 格式,两者天然结合。
下一章预告:OAuth2 和 JWT 提供了认证和授权能力,但 Web 应用还面临各种攻击威胁。下一章「常见攻击防护」将系统讲解 CSRF、CORS、Clickjacking、Session Fixation 等攻击的原理与 Spring Security 的防御机制。