OAuth2.0一些概念与定义

1.OAuth2.0是什么?

OAuth2.0是一种授权协议,保证第三方只有在获得授权之后,才可以进一步访问授权者的数据,也可以说OAuth2.0是一种安全协议。OAuth2.0的核心就是颁发访问令牌,然后使用访问令牌。

2.四种许可类型

1. 授权码许可类型(Authorization Code),2.隐式许可类型(Implicit),3.客户端凭据许可(Client Credentials),4.资源拥有者凭据许可(Resource Owner Password Credentials)。资源拥有者凭据,就是用户的凭据,就是用户名和密码。客户端凭据访问一些不属于资源拥有者独自拥有的数据,比如访问省份信息,这个时候,直接用客户端自己的凭据,比如app_id来换取访问令牌的值,进行接下来的访问。如果你的软件就是直接嵌入到了浏览器中运行,而且还没有服务端的参与,并且还想使用 OAuth 2.0 流程的话,那么便可以直接使用隐式许可类型了。

隐式许可流程图(来自极客时间)

3.OAuth2.0体系的四种角色

1.资源拥有者,2.客户端,3.授权服务,4.受保护资源。举个例子,登录qq音乐,需要用qq进行授权,你自己就是资源拥有者,qq音乐就是需要授权的客户端,授权服务就是qq的授权服务,受保护资源就是qq音乐那些需要登录才能听的音乐。

4.为什么要有授权码(引用极客时间的讲解图)

第二张图是没有授权码的授权流程。1.如果没有授权码,小明在是第三方平台授权完成后,无法跳转到客户端,这样与客户端失去了联系,需要自己手动跳转到客户端。2.授权码是可以暴露在浏览器上的,而通过授权码拿到的访问令牌是不能暴露在浏览器上的,所以,跳转到客户端后,客户端前台拿到授权码去获取访问令牌,访问令牌直接后端之间传输,这样最大程度保证了安全性。

5.刷新令牌

刷新令牌是和访问令牌一起颁发的,目的是为了在访问令牌失效后,重新获取刷新令牌的一种机制。在颁发访问令牌的同时还会颁发刷新令牌 refresh_token 值,这种机制可以在无须用户参与的情况下用于生成新的访问令牌。提升用户的体验。

6.令牌使用方式

OAuth2.0目前只支持一种即bearer 令牌类型,使用访问令牌的方式有三种:

1.Form-Encoded Body Parameter(表单参数)

POST /resource HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded

access_token=b1a64d5c-5e0c-4a70-9711-7af6568a61fb

2.URI Query Parameter(URI 查询参数)

GET /resource?access_token=b1a64d5c-5e0c-4a70-9711-7af6568a61fb HTTP/1.1
Host: server.example.com

3.Authorization Request Header Field(授权请求头部字段)

GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer b1a64d5c-5e0c-4a70-9711-7af6568a61fb

根据 OAuth 2.0 的官方建议,系统在接入 OAuth 2.0 之前信息传递的请求载体是 JSON 格式的,那么如果继续采用表单参数提交的方式,令牌就无法加入进去了,因为格式不符。如果这时采用参数传递的方式呢,整个 URI 会被整体复制,安全性是最差的。而请求头部字段的方式就没有上述的这些“烦恼”,因此官方的建议是采用 Authorization 的方式来传递令牌。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值