OAuth2.0授权机制的理解

2019/08 24 09:08

OAuth2.0是目前最流行的授权机制,用来授权第三方应用,获取数据的
简单说,OAuth就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取指定授权的数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。

令牌与密码
令牌(token)与密码(password)的作用是一样的,都是进入系统,但是有三点差异。

  1. 令牌是短期的,到期会自动失效,用户自己无法修改。密码是长期有效,用户可以修改,如不修改长期有效
    2.令牌可以被数据所有者撤销,会立即失效。密码如果被第三者知道,除非修改,用户无能为力。
    3.令牌有权限范围。对于网络服务来说,只读令牌就比读写令牌更安全。密码一般是完整权限。
    令牌必须报名,泄露令牌与泄露密码的后果是一样的。

 

OAuth2.0四种授权类型

OAuth有三个角色,客户端(第三方应用),资源所有者,资源服务器。资源所有者同意后,资源服务器可以向客户端颁发令牌。客户端通过令牌,去请求数据。

四种授权方式:

  1. 1、授权码(authorization-code)
  2. 授权码方式,指的是第三发应用先申请一个授权码,然后再用该授权码获取令牌
  3. 2、隐藏式(implicit)
  4. 有些Web应用是纯前端应用,没有后端。这时就不能用授权码方式,必须将令牌存储在前端。RFC6749就规定了第二种方式,允许直接向前端颁发令牌。这种方式没有授权码这种中间步骤,所以称为(授权码)隐藏式
  5. 3、密码式(password)
  6. 如果你高度信任某个应用,RFC6749也允许用户把用户名和密码,直接告诉该应用。该应用就是用你的密码,申请令牌,这种方式称为“密码式”安全,令牌,OAuth,2.0
  7. 4、客户端凭证(client credentials)
  8. 适用于没有前端的命令行应用,即在命令行下请求令牌。

注:不管哪一种授权方式,第三方应用申请令牌之前,都必须先到资源服务器进行系统备案,说明自己的身份,然后会拿到两个身份识别码:客户端ID(client ID)和客户端秘钥(client secret).这是为了防止令牌被滥用,没有备案过的第三方应用,是不会拿到令牌的。

 

--转载请注明: https://www.guangboyuan.cn/oauth2-0%e6%8e%88%e6%9d%83%e6%9c%ba%e5%88%b6%e7%9a%84%e7%90%86%e8%a7%a3/

发表回复

(必填)