Step by Step带你玩转DuerOS - OAuth2.0全面解析 (4)

DuerOS的开发平台在创建产品时,有一步需要进行OAuth设置(http://open.duer.baidu.com/doc/overall/console-guide_markdown),

DuerOS OAuth配置

很多同学到这个步骤估计会很困惑,OAuth是什么?这里设置的URL有是什么呢?那我们这篇文章就好好讲一讲OAuth到底是什么?在DuerOS的接入过程中又是怎么使用的。

什么是OAuth

其实OAuth在我们日常中是非常常见的,但可能你没有专门的关注过功能背后的实现原理。这里有一篇阮一峰老师专门介绍OAuth的文章《理解OAuth 2.0》(http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html),这是我目前为止见得对OAuth讲解最浅显又是最全面的一篇(ps 阮一峰老师的文章质量都很高呀)。

DuerOS是如何使用OAuth的

OAuth有4中授权模式,

OAuth授权模式

而DuerOS使用的便是其中功能最完整、流程最严密的授权码模式。下面我们通过Python版本的DuerOS客户端来分析下DuerOS对OAuth的使用。

认证流程组成单元

授权码模式的认证流程如下所示,

授权码模式认证流程

主要涉及到4个基本单元:

  • A-用户客户端
  • B-用户端浏览器(完成URI重定向)
  • C-用户客户端对应的后台服务器
  • D-认证服务器

针对于DuerOS Python客户端,A、B、C、D分别对应:

  • A-auth.sh(app/auth.py)
  • B-系统浏览器
  • C-app/auth.py中创建的Tornado WebServer
  • D-百度的认证服务器

OAuth认证流程

下面我们结合代码,一步一步的解析OAuth的整个过程

1.用户客户端(A)对应的后台服务器(C)创建

运行,

# ./auth.sh

Python客户端会创建一个本地的Tornado WebServer,

Tornado WebServer创建(app/auth.py)

这个Tornado WebServer只是为了调试方便被部署在本地,实际项目应用中会作为独立的Web服务,部署在云端的。

2. 客户端(A)吊起本地浏览器(B)访问客户端对应的后台服务器(C)

好像有些绕(汗。。。)

app/auth.py

其中,URL(http://127.0.0.1:3000)就是客户端对应的后台服务器(C)的地址。

3. 客户端对应的后台服务器(C)通过重定向的方式让客户端浏览器(B)对百度认证服务器(D)发送认证请求

哎,好像更绕了(再汗。。。)

app/auth.py

4. 百度认证服务器(D)向客户端浏览器(B)返回用户登录页面

用户登录页面

前面的步骤,用户客户端(A)、用户客户端对应的后台服务器(C)、百度认证服务器(D),三者之间的通信都需要客户端浏览器(B)进行重定向做请求转发。这样的过程是不是感觉很困惑呢?为啥非要通过浏览器(B)来做重定向请求转发呢?为啥不直接进行Http请求呢?
现在看到这个页面应该有答案了吧:需要由浏览器(B)来展示来自百度认证服务器(D)的认证页面,并完成用户身份认证的交互。

5. 百度认证服务器(D)将授权码通过客户端浏览器(B)转发给客户端对应的后台服务器(C)

用户在第4步中输入账号、密码后,点击登录并授权。百度的认证服务器(D)会收到用户登录请求,然后将授权码通过客户端浏览器(B)重定向的方式发送给客户端对应的后台服务器(C)。

app/auth.py

6. 客户端后台服务器(C)通过授权码向百度认证服务器(D)请求Token

客户端后台服务器(C)通过上一步获得的授权码向百度认证服务器(D)请求授权,并获取Token,

app/auth.py

7. 用户客户端(A)从客户端的后台服务器(C)中获取Token

由于Python DuerOS客户端中的后台服务器(Tornado WebServer)就在本地,所以,Token可以直接获得,

8. token使用

千辛万苦通过OAuth流程获取的Token其实在DuerOS的后续请求中只是一个字段而已,

请求中的token字段
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,652评论 18 139
  • OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。...
    谢谢写阅读 747评论 0 1
  • OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。...
    夕望有你阅读 285评论 1 2
  • 最近发现公司里有很多人都不理解Oauth,而且目前国内大部分的oauth实现也都是基于标准oauth2.0的改版,...
    monkey01阅读 942评论 0 5
  • 1. 微服务架构介绍 1.1 什么是微服务架构? 形像一点来说,微服务架构就像搭积木,每个微服务都是一个零件,并使...
    静修佛缘阅读 6,641评论 0 39