概述

OAuth(Open Authorization)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

角色

image.png①AuthorizationServer:认证服务器,用于认证用户。如果客户端认证通过,则发放访问资源服务器的令牌。
②ResourceServer:资源服务器,拥有受保护资源。如果请求包含正确的访问令牌,则可以访问资源。
友情提示:提供管理后台、客户端 API 的服务,都可以认为是 Resource Server。
③Client:客户端。它请求资源服务器时,会带上访问令牌,从而成功访问资源。
友情提示:Client 可以是浏览器、客户端,也可以是内部服务。
④ ResourceOwner:资源拥有者。最终用户,他有访问资源的账号与密码。
友情提示:可以简单把 Resource Owner 理解成人,她在使用 Client 访问资源。

auth2 资源的交互

注册客户端

image.png

授权类型

授权码类型(最广泛使用的流程,适合web/app)

image.png

网页授权流程分为四步:
1、引导用户进入授权页面同意授权,获取 code
2、通过 code 换取网页授权 access_token(与基础支持中的 access_toke n不同)
3、如果需要,开发者可以刷新网页授权 access_token,避免过期
4、通过网页授权 access_token 和 openid 获取用户基本信息(支持 UnionID 机制)

资源所有者密码流程(适合官方应用)

客户端凭证流程(适合无用户参与的应用)

刷新令牌证流程(适合访问令牌后刷新令牌)

0Auth2

image.png

参考

https://www.iocoder.cn/Spring-Security/OAuth2-learning/