SpringBoot集成OAuth2框架(第三方授权认证)
OAuth2介绍
什么是OAuth2
OAuth 是一个开放标准,该标准允许用户让第三方应用访问该用户在某一网站上存储的私密资源(如头像、照片、视频等),而在这个过程中无需将用户名和密码提供给第三方应用。实现这一功能是通过提供一个令牌(token),而不是用户名和密码来访问他们存放在特定服务提供者的数据。采用令牌(token)的方式可以让用户灵活的对第三方应用授权或者收回权限。
OAuth2 是 OAuth 协议的下一版本,但不向下兼容 OAuth 1.0。传统的 Web 开发登录认证一般都是基于 session 的,但是在前后端分离的架构中继续使用 session 就会有许多不便,因为移动端(Android、iOS、微信小程序等)要么不支持 cookie(微信小程序),要么使用非常不便,对于这些问题,使用 OAuth2 认证都能解决。
简单说就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。
OAuth2基础概念
- Authorization server:授权服务器,比如微信授权服务器
- Resource server:资源服务器,和授权服务器可以是同一个服务器,也可以不是同一个
- HTTP service:服务提供商,如微信
- client:客户端,如网站“思否”
- Resource Owner:资源所有者,如用户
- User Agent:用户代理,如:浏览器
OAuth2授权流程
1)客户端向授权服务器请求访问资源所有者的资源->
2)资源所有者"同意"授权,授权服务器则返回code(授权码)给客户端->
3)客户端拿code去授权服务器请求token(一般在客户端后台实现)->
4)授权服务器验证code的真伪,若真则返回token->
5)客户端拿到token,就可以去资源服务器请求访问资源->
6)资源服务器验证token正确则返回资源
OAuth2四种授权模式
OAuth2定义了四种类型的授权模式:
- 授权码模式
- 密码模式
- 简化模式
- 客户端模式
授权码模式


4)授权服务器验证code的真伪,若真则返回token:微信授权服务器拿到code(授权码)、“重定向的url”之后,验证code,并验证“重定向的url”是否就是事先指定的“重定向url”,若是则返回token给“重定向url”,即“思否”。
5)第三方客户端拿到token,就可以去资源服务器请求访问资源:“思否”拿到token后,就可以真正向微信请求访问我的个人信息。
6)资源服务器验证token正确则返回资源:微信服务器收到token后,验证成功后返回我的个人信息给“思否”。
简化模式
密码模式
客户端模式
SpringBoot使用OAuth2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」