Flask--物联网应用--天猫精灵接入--OAuth2.0

牛人的博客

OAuth2.0协议原始文档

理论解释

OAuth 2.0是什么

OAuth(Open Authorization)是一种协议,被广泛运用于验证与授权领域。现在最新版本是2.0。

OAuth 2.0的目的

  • 允许第三方应用从HTTP服务器获得一定权限
  • 允许第三方应用在用户批准下代表用户与服务器进行交互
  • 允许第三方应用获得代表用户的权限

那么通俗来讲:

第三方应用在用户批准下获得服务商里储存的用户个人信息(什么值得买网站使用微博账号登陆,并获得用户微博账号里的名字)
第三方应用代表用户去与服务器交互(虾米音乐以你的名义发了一条分享音乐的微博)
用户无需提供账户密码给第三方应用的(什么值得买和虾米音乐服务器并不会储存你的微博账号密码)
总结一下,就是通过OAuth协议能够让用户给各种第三方应用分发特定的令牌,这个令牌是有时间限制,有权限控制,访问特定资源的,而第三方应用就握着这个令牌去做些对用户来说有意义的事情。

OAuth 2.0的授权流程

这里写图片描述

  • (A).客户端(Client)向用户(Resource Owner)发起请求授权(Authorization Request).
  • (B).用户(Resource Owner)批准了客户端(Client)的请求授权(Authorization Grant).
  • (C).客户端(Client)用上一步的用户授权许可(Authorization Grant),向认证服务器(Authorization Server)请求一个令牌(Access Token).
  • (D).服务器(Authorization Server)核实了用户授权许可,发放了一个令牌(Access Token)给客户端(Client).
  • (E).客户端(Client)用上一步获得的令牌(Access Token)向资源服务器(Resource Server)请求一些需要授权的资源(Protected Resource).
  • (F).资源服务器(Resource Server)核实了令牌(Access Token),向客户端(Client)发放了所请求的需授权资源(Protected Resource).

OAuth 2.0授权码模式介绍(总共四种模式)

这里写图片描述

  • (A).客户端(Client)通过浏览器(User-Agent)把用户导向认证服务器(Authorization Server)的认证地址(Client Identifier & Redirection URI)。
  • (B).用户(Resource Owner)在浏览器(User-Agent)上向认证服务器(Authorization Server)上确认是否授权给客户端(User authenticates)。
  • (C).假设用户确认了授权,认证服务器(Authorization Server)就会把用户导向一个用户预先指定的重定向URI,并附上一个认证授权码(Authorization Code)。
    (——————–后台操作,以下操作用户不可见——————– )
  • (D).客户端(Client)在上一步得到的认证授权码(Authorization Code),附上上一步的重定向URI(Redirection URI),向认证服务器(Authorization Server)申请一个令牌。
  • (E).认证服务器(Authorization Server)核实了认证授权码和重定向URI,向客户端(Client)发放访问令牌(Access Token)还有更新令牌(Refresh Token)。

应用(Python)


AliGenie里面的应用

 阿里平台默认接入的硬件厂商都有自己的平台,既然有自己的平台就有自己用户认证系统,天猫精灵就是通过OAuth2.0在不需要注册为一个新的硬件厂商用户的同时, 使用用户已有的账号获得硬件厂商的认证系统的授权,使得天猫精灵能够访问该用户名下的硬件设备,然后完成指令的交互。

对于开发者而言

 开发者就相当于是硬件厂商,我们要搭建我们的用户认证系统,要想接入天猫精灵,我们需要为天猫精灵在我们的用户注册系统上注册一个账号,天猫精灵平台通过我们提供的账号和密码来控制我们开发者开发的硬件系统。

开发者要做的事:

  • (1)有自己的服务器
  • (2)服务器上有网站
  • (3)网站完成了SSL认证–(Https://www.example.com)<<===有了那个 ‘s’
  • (4)服务器上搭建了OAuth2.0认证服务器
  • (5)在该OAuth认证服务器上注册了一个账号和密码
  • (6)把这个注册了的账号和密码以及其他必须的(如下:)填到天猫精灵的平台上去

这里写图片描述
这里写图片描述

  • 账户授权连接:开发者的用户认证系统上用来登录连接的地址(URL),开发者搭建的自己的OAuth服务器的认证地址。
  • Client ID:开发者提供的自己的用户认证系统上已经注册的账号。
  • Client Secret: 开发者提供的自己的用户认证系统上已经注册的账号的密码。
  • Access Token URL:在搭建自己的OAuth服务器时有专门的文件来处理。
  • 开发者网关地址:这个地址是天猫精灵协议POST的地址,在协议对接中有介绍。

猜你喜欢

转载自blog.csdn.net/qq_28877125/article/details/81207475
今日推荐