OAuth 2.0 文档

OAuth 2.0 是一个授权协议,定义了四种授权模式:授权码模式、简化模式、用户授信模式和应用授信模式。授权码模式广泛应用于第三方登录,如微信、QQ等。OAuth 2.0 通过令牌(access_token)控制权限,令牌具有短期性、可撤销和权限范围等特点,确保系统安全。简书等网站通过OAuth 2.0 支持第三方登录,方便用户操作。
摘要由CSDN通过智能技术生成

OAuth 2.0 文档

初见OAuth2.0

​ OAuth 2.0是一个业界标准的授权协议,其定义了四种可以适用于各种应用场景的授权交互模式:授权码模式、应用授信模式、用户授信模式、简化模式。其中,授权码模式被广泛应用于第三方互联网开放平台,通过第三方登录是其最常见应用场景之一,比如使用微信、QQ和淘宝账号进行登录。

​ OAuth 2.0 官方文档地址:https://tools.ietf.org/html/rfc6749#section-4.3.2

一、情景再现:

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LX4uivBq-1634386586043)(images/timg.jpeg)]

二、令牌与密码

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

​ (1)令牌是短期的,到期会自动失效,用户自己无法修改。密码一般长期有效,用户不修改,就不会发生变化。

​ (2)令牌可以被数据所有者撤销,会立即失效。以上例而言,屋主可以随时取消快递员的令牌。密码一般不允许被他人撤销。

​ (3)令牌有权限范围(scope),比如只能进小区的二号门。对于网络服务来说,只读令牌就比读写令牌更安全。密码一般是完整权限。

​ 上面这些设计,保证了令牌既可以让第三方应用获得权限,同时又随时可控,不会危及系统安全。这就是 OAuth 2.0 的优点。

​ 注意,只要知道了令牌,就能进入系统。系统一般不会再次确认身份,所以令牌必须保密,泄漏令牌与泄漏密码的后果是一样的。 这也是为什么令牌的有效期,一般都设置得很短的原因。

三、互联网应用案例

情景再现:

​ 简书,此网站为了方便用户登陆,他们支持很多个第三方登录,就拿微博登陆来说,用户在使用简书的网站的时候,为了方便登陆。他们会选择第三方登录,如果用户手机中有微博应用的话,弹出来一个授权按钮之后,用户点击授权,用户授权之后会生成一个授权码之类的字符串,简书服务器拿着这个串去访问用户的微博信息。例如微博昵称,微博的设置的地址,还可以访问微博绑定的手机号码,对于一些比较新的应用网站来时,通过支持第三方登录可以获取不少的用户量。

名词定义:

​ 在详细讲解OAuth 2.0之前,需要了解几个专用名词。

1) Client:准备访问用户资源的应用程序,其可能是一个web应用,或是一个后端web服务应用,或是一个移动端应用,也或是一个桌面可执行程序。
(2) Resource Owner:顾名思义,资源的所有者,很多时候其就是我们普通的自然人(但不限于自然人,如某些应用程序也会创建资源),拥有资源的所有权。
(3) User Agent:用户代理,本文中就是指浏览器。
(4) Authorization server:授权服务器,在获取用户的同意授权后,颁发访问令牌给应用程序,以便其获取用户资源。
(5) Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。

实现思路:

​ OAuth在 客户端服务提供商 之间,设置了一个授权层(authorization layer)。“客户端"不能直接登录"服务提供商”,通过登录授权层,将用户与客户端区分开来。"客户端"登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,可以指定授权层令牌的权限范围和有效期。

​ "客户端"登录授权层以后,"服务提供商"根据令牌的权限范围和有效期,向"客户端"开放用户储存的资料。

运行流程

​ OAuth 2.0的运行流程,摘自RFC 6749。

 	 +--------+                               +---------------+
     |        |--(A)- Authorization Request ->|   Resource    |
     |        |                               |     Owner     |
     |        |<-(B)-- Authorization Grant ---|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值