OAuth 2.0的初步理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fangxinde/article/details/83586857

         OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。根据实际工作情况,本文对OAuth2.0做一个通俗的解释。

一、使用场景

        用户购买荣事达智能设备,在我司app上注册账户,登录app,通过荣事达云平台控制智能设备。某一天用户希望通过科大讯飞控制在我司购买的智能设备。那用户如何向科大讯飞云平台授权呢?传统的方法是用户将自已的账号和密码给科大讯飞,让科大讯飞来控制自已的设备。此种做法存在以下缺点:

  1.科大讯飞保存用户的账号、密码,客户让自已的信息全都暴露给科大讯飞,这非常不安全。

  2.科大讯飞拥有获取客户在我司存储的所有资料的权利。而用户没法限制科大讯飞获取的权限范围和有效期。

  3.如果客户修改密码收回科大讯飞的权限,那么使得其他第三方获取授权的应用程序失效(例如:用户通过天猫精灵控制荣事达的智能设备,但此时密码发生变化,天猫精灵就不能控制用户在我司注册的智能设备)

  4.用户可以通过天猫精灵、小度等第三方平台控制自已的设备,只要有一方应用程序被破解,用户的密码就会泄露以及被密码保护的数据被泄露。

二、OAuth使用思路

           科大讯飞(客户端)不能直接登录荣事达云平台(服务提供商)来控制智能设备,而是通过用户进行授权操作,告诉荣事达云平台,科大讯飞可以控制其账户下的智能设备。此时荣事达云平台分配一个token和一些能控制设备的回调接口地址给讯飞,讯飞云平台就可根据带着token的控制接口地址访问荣事达云平台进行设备控制。只是这个token设置有权限范围和时限。

三、工作流程

1.用户登录科大讯飞客户端,讯飞要求给予授权

2.用户同意授权,讯飞(客户端)获取授权码code

3.讯飞通过code,向荣事达云平台申请令牌token

4.荣事达(服务提供商)审核code,确认无误后,同意向讯飞发放令牌token

5.讯飞通过令牌token,访问荣事达云平台来控制设备

6.荣事达云平台验证token,确认无误后,允许讯飞客户端访问云平台来控制设备

四、客户端授权模式

客户端必须得到用户的授权,才能获取令牌,然后客户端才能凭令牌获取服务提供商提供的资源。

OAuth2.0提供了四种授权模式,本文主要介绍客户授权码模式。

授权码模式是功能最完整、流程最严密的授权模式。他的特点就是通过客户端的后台服务器,与“服务提供商”的认证服务器进行互动。

猜你喜欢

转载自blog.csdn.net/fangxinde/article/details/83586857