OAuth的,可以理解为【第三方】想取得【用户】在【系统】内的信息,【用户】同意后,【系统】授予【第三方】访问用的【令牌】,在优先的时间内,进行有限的访问。
【第三方】的目的是取得的【系统】内的信息,方法是使用授权用的【令牌】,手段是让【用户】进行授权。
角色划分
英文 |
中文 |
说明 |
备注 |
Third-party application |
第三方应用程序 |
第三者,想要用户存在其他服务器上的信息 |
---- |
HTTP service |
HTTP服务提供商 |
即系统,存有用户的信息 |
---- |
Resource Owner |
资源所有者 |
即:用户 |
---- |
User Agent |
用户代理 |
浏览器,客户端 |
---- |
Authorization server |
认证服务器 |
认证用服务器,属于系统的 |
---- |
Resource server |
资源服务器 |
接口请求,处理用接口 |
--- |
四种方式
状态 |
简易说明 |
特征 |
备注 |
授权码(authorization-code) |
利用链接跳转的方式,授权码->令牌 |
前后端结合的方式 |
最常用,安全性高 |
隐藏式(implicit) |
利用链接跳转的方式,直接取得令牌 |
纯前端 |
安全性有限,因此,一般有效期是session |
密码式(password) |
用户给出服务器用户名和密码,然后服务器用用户名密码取得令牌 |
基本没见过 |
|
客户端凭证(client credentials) |
只是一个身份确认,一般权限比较低 |
--- |
对第三方的凭证,感觉上类似于心跳了 |
以授权码为例:
- A站生成一个B站的授权码请求链接(包含A站的回调地址)。发给用户,让用户跳转。
- 用户跳转后,用户在B站进行登录,B站询问用户是否同意授权给A站。
- 用户同意后。B站根据授权码请求链接中的回调地址,对A站的接口进行回调,在回调请求中附带【授权码】
- A站取得【授权码】之后,A站使用【授权码】请求B站,得到【令牌】
- A站使用【令牌】访问A站里,用户的信息。
一些名词
状态 |
说明 |
作用方向 |
备注 |
response_type |
模式,如code标识授权码模式 |
请求授权时 |
--- |
redirect_uri |
回调地址 |
请求授权时 |
--- |
scope |
授范围,如all |
请求授权时 |
--- |
grant_type |
授权方式,如authorization_code,password等 |
取得令牌时 |
--- |