OAuth2.0简单理解
本文于 1990 天之前发表,文中内容可能已经过时。
[TOC]
一、定义
一个关于授权的开放网络标准。
允许用户让第三方应用访问该用户在某一网站上存储的私密的资源,而无须将用户名和密码提供给第三方应用
二、授权方式
四种授权方式:
- 授权码(authorization-code)
- 隐藏式(implicit)
- 密码式(password)
- 客户端凭证(client credentials)
1.授权码
第三方应用先申请和一个授权码,然后再用该码获取令牌
最常用流程,安全性也高。授权码
通过前端
传送,令牌
则是存储在后端
,而且所有与资源服务器的通信都在后端完成。这样前后端分离,可以避免令牌
泄露
(类似于微信登录)
- A跳转B,请求授权码。
- B提示登录授权,授权后回跳到A,返回授权码
- A拿到授权码,向B的后端请求令牌
- A拿到令牌,正常访问B的资源
2.隐藏式
允许直接向前端办法令牌,这中方式没有授权码这个中间步骤
- A跳转B,请求令牌
- A拿到令牌,正常访问B的资源
3.密码式
允许用户把用户名和密码,直接告诉该应用。该应用就使用你的密码,申请令牌
- A带上B的用户名和密码访问,返回令牌
- A拿到令牌,正常访问B的资源
风险很大,除特殊情况一般不考虑吧使用,必须是用户高度信任的用户
4.凭证式
没有前端的命令行应用,在命令下请求令牌
- A在命令行请求B(client_id、client_secret)
- B验证通过,直接返回令牌,A正常请求B的资源
此方式不是针对用户的,二十针对第三方应用的,所以存在多用户共享同一令牌
三、更新令牌
一次性颁发两个令牌,一个用于获取数据,另一个用于获取新的令牌。令牌到期前,用户使用refresh token发送一个请求,去更新令牌