主题
OAuth2.0
什么是OAuth
OAuth(Open Authorization)是一种常用的授权协议,旨在让用户能够将自己在某一平台上的数据或资源授权给另一个平台使用,而无需将账号和密码提供给第三方应用。OAuth的核心理念是通过令牌(Token)进行授权,而不是直接使用用户名和密码,提升了用户隐私和安全性。
OAuth 2.0 是当前最常用的版本,它支持多种授权方式,适用于多种应用场景,比如Web应用、移动应用、桌面应用等。
基本原理
主要角色
- 资源所有者(Resource Owner):通常是最终用户,拥有资源的所有权(如个人数据)。
- 客户端(Client):请求访问资源的应用,通常是第三方应用。
- 授权服务器(Authorization Server):负责用户认证,并颁发访问令牌(
Access Token)。 - 资源服务器(Resource Server):存储用户资源的服务器,负责接收并验证访问令牌,提供授权的资源。
认证流程
- 客户端请求授权: 客户端应用(第三方应用)请求资源所有者授权访问其受保护的资源。通常是通过用户的浏览器进行重定向,将用户引导到授权服务器。
- 资源所有者授权: 资源所有者(即用户)在授权服务器上进行认证(例如输入用户名和密码),并同意授予客户端应用访问其资源的权限。授权服务器验证用户身份后,用户同意授权。
- 授权码(Authorization Code): 授权服务器返回一个授权码(·Authorization Code·)给客户端应用。这个授权码是一次性的,客户端应用需要用它来交换访问令牌。
- 客户端用授权码换取令牌: 客户端应用使用授权码向授权服务器请求访问令牌(·Access Token·)。请求时需要附带客户端的身份信息(如客户端ID和客户端密钥)来验证身份。
- 授权服务器返回访问令牌: 授权服务器验证客户端的请求,并返回一个访问令牌(·Access Token·)和可选的刷新令牌(·Refresh Token·)。访问令牌用于访问受保护的资源,刷新令牌用于在令牌过期后获取新的访问令牌。
- 客户端访问资源服务器: 客户端应用使用获取的访问令牌向资源服务器请求受保护的资源。资源服务器验证令牌是否有效。
- 资源服务器返回资源: 如果访问令牌有效,资源服务器将返回请求的资源给客户端应用。
- 令牌过期和刷新(可选): 如果访问令牌过期,客户端可以使用刷新令牌向授权服务器请求新的访问令牌,以避免用户重新授权。
常见授权方式
授权码授权(Authorization Code Grant)
- 适用于Web应用或后台服务的场景。
- 客户端应用通过浏览器重定向用户到授权服务器,获取授权码,再用授权码换取访问令牌。
- 安全性较高,适用于需要更强安全性保护的场景。
简化授权(Implicit Grant)
- 适用于单页应用(SPA)等浏览器端应用。
- 用户授权后,直接返回访问令牌,而不需要交换授权码。
- 安全性较低,因为令牌直接暴露给客户端应用。
密码授权(Resource Owner Password Credentials Grant)
- 适用于用户信任客户端应用的场景,例如用户直接将用户名和密码提供给客户端应用。
- 客户端应用用用户名和密码直接请求访问令牌。
- 安全性较低,不建议在不可信环境中使用。
客户端凭证授权(Client Credentials Grant)
- 适用于客户端应用本身需要访问资源服务器的场景,而不需要用户参与认证。
- 客户端直接使用自己的凭证(如API密钥)获取访问令牌。
开发步骤
步骤一:获取标准授权码
步骤二:获取AccessToken
步骤三:获取用户信息
API列表
| 名称 | 说明 | 版本 |
|---|---|---|
| 获取标准授权码 | 用户访问第三方应用时,第三方应用向IDS发起授权登录请求 | |
| 获取AccessToken | 通过用户验证登录授权后,获取授权令牌Access Token | |
| 刷新AccessToken | 实现授权自动续期,避免要求用户再次授权的操作 | |
| 获取用户信息 | 第三方应用使用IDS登录时,从IDS中获取当前登录用户的信息 |

