OAuth2.0介绍
OAuth 2.0是用于授权的行业标准协议,允许用户让第三方应用访问该用户在某一网站受保护的资源(比如user API),而无需将用户名和密码提供给第三方应用。OAuth 2.0专注于简化客户端开发,同时为web应用程序、桌面应用程序、移动电话和客厅设备提供特定的授权流程。
角色划分
- resource owner:资源所有者,能够授予第三方应用访问特定保护资源的权限。 当资源所有者是个人时,它是被称为最终用户。
- resource server: 资源服务器,受保护的资源一般通过携带访问令牌(access token)的API请求来访问。资源服务器通过访问authorzation server检查访问令牌(accessToken)的有效性。如果令牌有效并且权限合法,则允许访问
- client: 第三方应用,资源所有者通过client应用发起访问保护资源请求;
- authorization server: 授权服务器会给通过认证和授权的client发放访问令牌(access server受保护的资源;
举个例子: 微信用户小王通过微信账号登录广发理财产品系统购买基金,登陆时候跳转到微信登录授权页面,授予理财产品系统访问个人昵称、头像的权限。这个场景里,对应的角色如下:
- resource owner: 微信用户小王,拥有保护信息(访问个人昵称、头像等)
- resource server: 微信平台(提供个人信息的api系统)
- authorization server: 微信平台(提供登录以及授权的系统)
- client: 广发理财产品系统
OAuth2.0协议
+--------+ +---------------+
| |--(1)- Authorization Request ->| Resource |
| | | Owner |
| |<-(2)-- Authorization Grant ---| |
| | +---------------+
| |
| | +---------------+
| |--(3)-- Authorization Grant -->| Authorization |
| Client | | Server |
| |<-(4)----- Access Token -------| |