OAuth2.0协议¶
简介¶
OAuth 是一个关于授权(authorization)的开放网络标准
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。OAuth 是 Open Authorization 的简写。
OAuth2.0 一共分为四种授权方式:
1. 密码模式
2. 客户端模式
3. 简化模式
4. 授权码模式
QuickLearn¶
实例:
有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来
用户为了使用该服务,必须让"云冲印"读取自己储存在Google上的照片
名词:
1. Third-party application
第三方应用程序,又称"客户端"(client),即上一节例子中的"云冲印"
2. HTTP service
HTTP服务提供商,本文中简称"服务提供商",即上一节例子中的Google
3. Resource Owner
资源所有者,又称"用户"(user)
4. User Agent
用户代理,本文中就是指浏览器
5. Authorization server
认证服务器,即服务提供商专门用来处理认证的服务器(如GitHub,微信等)
6. Resource server
资源服务器,即服务提供商存放用户生成的资源的服务器(通常和授权服务器属于同一服务商)
它与认证服务器,可以是同一台服务器,也可以是不同的服务器
步骤:
A. 用户打开客户端(三方应用)以后,客户端要求用户给予授权
B. 用户同意给予客户端授权
C. 客户端使用上一步获得的授权,向认证服务器申请令牌
D. 认证服务器对客户端进行认证以后,确认无误,同意发放令牌
E. 客户端使用令牌,向资源服务器申请获取资源
F. 资源服务器确认令牌无误,同意向客户端开放资源
注:最主要是B步骤
+--------+ +---------------+
| |--(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 ---| |
+--------+ +---------------+