关于OAuth
请先查阅以下资料:
OAuth 2的授权流程
参与的角色
Resource Owner
资源所有者,即代表授权客户端访问本身资源信息的用户(User),也就是应用场景中的“开发者A”Resource Server
资源服务器,托管受保护的用户账号信息,比如GithubAuthorization Server
授权服务器,验证用户身份然后为客户端派发资源访问令牌,比如GithubResource Server
和Authorization Server
可以是同一台服务器,也可以是不同的服务器,视具体的授权平台而有所差异
Client
客户端,即代表意图访问受限资源的第三方应用
授权流程
+--------+ +---------------+
| |--(A)- Authorization Request ->| Resource |
| | | Owner |
| |<-(B)-- Authorization Grant ---| |
| | +---------------+
| |
| | +---------------+
| |--(C)-- Authorization Grant -->| Authorization |
| Client | | Server |
| |<-(D)----- Access Token -------| |
| | +---------------+
| |
| | +---------------+
| |--(E)----- Access Token ------>| Resource |
| | | Server |
| |<-(F)--- Protected Resource ---| |
+--------+ +---------------+
上面的流程图取自The OAuth 2.0 Authorization Framework#1.2
- (A) 用户打开客户端以后,客户端要求用户给予授权。
- (B) 用户同意给予客户端授权。
- (C) 客户端使用上一步获得的授权,向认证服务器申请令牌。
- (D) 认证服务器对客户端进行认证以后,确认无误,同意发放令牌
- (E) 客户端使用令牌,向资源服务器申请获取资源。
- (F) 资源服务器确认令牌无误,同意向客户端开放资源。
授权许可 Authorization Grant
- Authorization Code
- 结合普通服务器端应用使用(web端常用的授权方式)
- Implicit
- 结合移动应用或 Web App 使用
- Resource Owner Password Credentials
- 适用于受信任客户端应用,例如同个组织的内部或外部应用
- Client Credentials
- 适用于客户端调用主服务API型应用(比如百度API Store)
在
JustAuth
中是使用的Authorization Code
授权方式,下面将主要讲解Authorization Code
的授权流程
- 适用于客户端调用主服务API型应用(比如百度API Store)
在