认识OAuth 2.0及实例

OAuth 2.0 是一种授权机制,用于安全地控制第三方应用访问用户数据。它通过令牌(token)替代密码,提供短期、可撤销的权限。授权流程包括授权码模式、简化模式、密码模式和客户端模式。用户授权后,第三方应用通过令牌获取数据。例如,第三方登录就是OAuth的实际应用,应用需在服务提供商处登记获取客户端ID和密钥。
摘要由CSDN通过智能技术生成

GitHub:https://github.com/JDawnF/learning_note

一、简介

1.类比小区门禁

小区中有门禁,出入需要输入密码,但快递人员等非小区用户进入时,需要先申请小区用户授权方可进入。

授权机制如下:

第一步,门禁系统的密码输入器下面,增加一个按钮,叫做"获取授权"。快递员先按这个按钮,去申请授权。

第二步,他按下按钮以后,小区用户的手机就会跳出对话框:有人正在要求授权。系统还会显示该快递员的姓名、工号和所属的快递公司。

小区用户确认请求属实,就点击按钮,告诉门禁系统,我同意给予他进入小区的授权。

第三步,门禁系统得到我的确认以后,向快递员显示一个进入小区的令牌(access token)。令牌就是类似密码的一串数字,只在短期内(比如七天)有效。

第四步,快递员向门禁系统输入令牌,进入小区。

有人可能会问,为什么不是远程为快递员开门,而要为他单独生成一个令牌?这是因为快递员可能每天都会来送货,第二天他还可以复用这个令牌。另外,有的小区有多重门禁,快递员可以使用同一个令牌通过它们。

2.互联网应用

首先,居民小区就是储存用户数据的网络服务。比如,微信储存了我的好友信息,获取这些信息,就必须经过微信的"门禁系统"。其次,快递员(或者说快递公司)就是第三方应用,想要穿过门禁系统,进入小区。最后,我就是用户本人,同意授权第三方应用进入小区,获取我的数据。

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

二、令牌与密码

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

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

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

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

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

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

OAuth 2.0 对于如何颁发令牌的细节,规定得非常详细。具体来说,一共分成四种授权类型(authorization grant),即四种颁发令牌的方式,适用于不同的互联网场景。

三、名词定义

(1) Third-party application:第三方应用程序,本文中又称"客户端"(client),即上一节例子中的"云冲印"。

(2)HTTP service:HTTP服务提供商,本文中简称"服务提供商",即上一节例子中的Google。

(3)Resource Owner:资源所有者,本文中又称"用户"(user)。

(4)User Agent:用户代理,本文中就是指浏览器。

(5)Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。

(6)Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。

OAuth的作用就是让"客户端"安全可控地获取"用户"的授权,与"服务商提供商"进行互动。

OAuth在"客户端"与"服务提供商"之间,设置了一个授权层(authorization layer)。"客户端"不能直接登录"服务提供商",只能登录授权层,以此将用户与客户端区分开来。

OAuth2.0是一种用于授权的开放标准,允许用户提供给第三方应用程序有限访问他们在某一特定服务上的资源的能力。OAuth2.0的实现涉及到三个主要参与方:用户、客户端应用程序和授权服务器。 举个例子来说明OAuth2.0的实现过程。假设用户使用某个社交媒体平台(如微信)登录某个第三方应用程序(如新闻阅读应用)。在这个过程中,有一个客户端应用程序正在请求访问平台上的某个特定资源,比如用户的公开个人信息或者朋友列表。 首先,用户在第三方应用程序中点击使用微信登录的按钮。然后,第三方应用程序将跳转到微信的授权服务器上。 在授权服务器上,用户会被要求提供对应用程序的访问权限。用户可以查看应用程序请求的具体权限范围,并选择授权或拒绝。如果用户同意,授权服务器将颁发访问令牌给第三方应用程序。 此时,第三方应用程序可以使用颁发的访问令牌来访问用户的资源。例如,如果该应用程序请求访问用户的朋友列表,它可以使用访问令牌来向微信平台发出请求,并获取用户的朋友列表。 OAuth2.0的实现提供了更安全和更灵活的授权方法,保护用户的隐私和资源。它允许用户对访问权限进行细粒度的控制,并提供了一种可靠的方式,让用户无需共享他们的用户名和密码就可以与第三方应用程序进行交互。 总之,OAuth2.0实例是在用户和第三方应用程序之间建立授权连接,使得第三方应用程序能够通过用户的访问令牌来访问用户在特定服务上的资源。这个实现过程中,授权服务器和访问令牌起到了关键的作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值