【每周分享第2期】OAuth 2.0剖析

前言

OAuth 是一种受权机制。数据的全部者告诉系统,赞成受权第三方应用进入系统,获取这些数据。系统从而产生一个短时间的进入令牌(token),用来代替密码,供第三方应用使用。OAuth机制保证了令牌既可让第三方应用得到权限,同时又随时可控,不会危及系统安全。前端

令牌与密码

1.令牌具备时效性, 到期会自动失效,用户本身没法修改;密码通常长期有效,用户不修改就不会变。
2.令牌具备即刻性,即数据全部者能够随时撤销,一旦撤销当即失效。
3.令牌有权限范围,密码则通常具有完整权限。

四种受权方式

  • 受权码(authorization-code)
第三方应用先申请一个受权码,而后再用该码获取令牌。
安全性最高,适用于那些有后端的 Web 应用。受权码经过前端传送,令牌则是储存在后端,并且全部与资源服务器的通讯都在后端完成。这样的先后端分离,能够避免令牌泄漏。

image.png

(1) A网站跳转 B网站
` https://b.com/oauth/authorize?
response_type=code&
client_id=CLIENT_ID&
redirect_uri=CALLBACK_URL&
scope=read`
(2) B网站就会跳回redirect_uri参数指定的网址
https://a.com/callback?code=A...
(3) A后端向 B网站请求令牌
https://b.com/oauth/token?
client_id=CLIENT_ID&
client_secret=CLIENT_SECRET&
grant_type=authorization_code&
code=AUTHORIZATION_CODE&
redirect_uri=CALLBACK_URL
  • 隐藏式(implicit)
令牌储存在前端,没有后端。

image.png

(1) 跳转到 B 网站
https://b.com/oauth/authorize?
response_type=token&
client_id=CLIENT_ID&
redirect_uri=CALLBACK_URL&
scope=read
(2) 返回令牌
https://a.com/callback#token=...
  • 密码式(password)
适用于其余受权方式都没法采用的状况,并且必须是用户高度信任的应用。
https://oauth.b.com/token?gra...
username=USERNAME&
password=PASSWORD&
client_id=CLIENT_ID
  • 凭证式
适用于没有前端的命令行应用,即在命令行下请求令牌。
https://oauth.b.com/token? grant_type=client_credentials& client_id=CLIENT_ID& client_secret=CLIENT_SECRET
相关文章
相关标签/搜索