OAUTH2.0
...大约 2 分钟
OAUTH2.0
OAUTH2.0
OAuth 2.0 是一种用于授权的开放标准协议,它允许第三方应用程序在资源所有者的许可下访问资源所有者的资源,而无需暴露资源所有者的凭据(如用户名和密码)。它通常用于提供第三方访问HTTP服务,例如社交媒体账户、在线文件存储等。OAuth 2.0 是 OAuth 协议的第二个版本,比 OAuth 1.0 简化了许多流程,增强了灵活性和安全性。
OAuth 2.0 的工作流程主要涉及以下角色:
- 资源所有者(Resource Owner):即用户,拥有受保护的资源,并通过授权服务器授予客户端访问这些资源的权限
- 客户端(Client):想要访问资源拥有者的资源的应用程序。它需要获得授权才能访问资源服务器上的受保护资源。
- 授权服务器(Authorization Server):处理客户端的授权请求,并颁发访问令牌。授权服务器验证资源拥有者的身份并获取其授权。
- 资源服务器(Resource Server):托管资源拥有者的受保护资源,并使用访问令牌来验证和处理客户端的请求。
OAuth 2.0 的基本授权流程如下:
- 客户端请求授权:客户端向资源所有者请求授权,通常通过用户界面引导用户进行授权。
- 资源所有者授予授权:资源所有者同意授权,并通过授权服务器生成授权代码(Authorization Code)。
- 客户端获取授权代码:客户端收到授权代码。
- 客户端交换授权代码:客户端将授权代码发送给授权服务器,交换访问令牌。
- 授权服务器颁发访问令牌:授权服务器验证授权代码并向客户端颁发访问令牌。
- 客户端访问资源:客户端使用访问令牌访问资源服务器上的资源。

OAuth 2.0 授权模式
OAuth 2.0 定义了多种授权模式,以满足不同的应用场景:
- 授权码模式(Authorization Code Grant):最常用的模式,适用于服务器端应用,包含了授权码的获取和交换流程。
- 简化模式(Implicit Grant):主要用于浏览器中的单页应用,省略了授权码的交换步骤,直接获取访问令牌。
- 密码模式(Resource Owner Password Credentials Grant):用户直接向客户端提供用户名和密码,适用于信任级别较高的应用。
- 客户端凭证模式(Client Credentials Grant):客户端以自身身份获取访问令牌,用于访问自身资源或服务端间的交互。