我理解的OAuth 1.0a 的验证过程
故事梗概:
淘宝店主糖糖在京郊仓库存了一批大白兔奶糖,为了防止仓库钥匙被偷把仓库的钥匙交给了专业的钥匙保管员公司。 糖糖卖了一斤大白兔需要快递公司的小迪送货。快递员小迪找钥匙保管公司借钥匙,然后去京郊仓库去取货。
出场人物:
快递公司的小迪 -------OAuth服务的消费者,也就是这个故事的主角
钥匙保管公司 ------ OAuth 服务提供者
淘宝店主 糖糖 ------- 最终用户
背景:
最近治安一直不好,经常发生被盗事件。小偷也学聪明了,直接偷两块大白兔不如偷钥匙,然后拿着钥匙开着卡车去仓库堂而皇之的偷。这样的情况越来越多,大家都开始重视钥匙的保管了,于是老欧看到了机会,开了一家“老欧钥匙保管公司”,做了几年经营的还真不错,大家不论什么钥匙都愿意在老欧的钥匙保管公司保存。后来为了方便客户老欧推出了一项租借临时钥匙的服务,不过谁要想从他那里借钥匙首先得先在他那里登记,登记好了老欧会给他一个密码。登记的客户可以在征得别人同意的情况下借别人的钥匙。快递公司的小迪经常到到别人家仓库去取货,肯定早早就在老欧那里登记了。他的登记信息是这样的,并且把他写在自己的一个特质名片上。
公司名:XiaoDExpress ---- Consumer Key
借到钥匙后需要做的事:1.在房间里四处转转
2.从里面拿点东西出来
老欧给的密码: Secret123 --Consumer Secret Key
今天的事就这样开始了。
快递公司的小迪早上刚上班,就接到了淘宝店主糖糖的电话,说要发两斤大白兔奶糖给广州的客人。
”铃铃铃。。。。“
小迪:”喂,这里是快递公司。“
糖糖:“早啊哥们,刚刚成了一单,给广州发2斤大白兔。”
小迪说:“货在哪儿啊?我去取。”
糖糖说:“货在京郊仓库呢,钥匙保管公司的老欧那里有钥匙,你找他要吧。”
小迪说:”好嘞,请好儿吧您呐“。
于是小迪首先给老欧钥匙保管公司的接待部(/oauth/request_token)打了个电话,告诉他的公司名(Consumer Key)和老欧当初给他的密码(Consumer Secret Key),说要临时借一下糖糖在京郊仓库的钥匙。
老欧钥匙保管公司的接待部根据小迪说的公司名和密码在账本上查了查,嗯,没问题,是小迪打来的电话,他的公司在我这儿登记过,密码也说对了,于是给了小迪一个小纸条(RequestToken),并告诉他找公司验证部(oauth/authorize)办手续。并且告诉小迪抓紧时间,小纸条只在1个小时内有效(Expiration)。
小迪拿着他的名片和接待部给的RequestToken找到了验证部(oauth/authorize)验证部说:“钥匙我做不了主,我得先问问钥匙的主人糖糖。” 于是老欧公司验证部给糖糖打了电话,老欧公司为了确保是糖糖本人接的电话,要求他说对了钥匙的特征(用户输入密码在OAuth 提供者的登录过程)。
老欧公司确定接电话的就是糖糖后告诉他说:“快递公司的小迪说要接你京郊仓库的钥匙,他要进去转转,还可能拿点东西出来,你借不借?”
糖糖:”没事,借给他吧,我们说好了。“
老欧公司验证部:”好,小迪,糖糖说借给你钥匙,你拿着这个纸条(oauth_verifier)到公司出纳部去领钥匙吧。不过赶紧去啊,这纸条就今天有效(Expiration)“。
快递公司的小迪拿着自己的名片和验证部给的小纸条(oauth_verifier)到了出纳部(/oauth/access_token),出纳部验证小迪的身份和验证部给的小纸条后,把糖糖在京郊仓库的钥匙给了小迪说:”你现在可以拿着糖糖的钥匙去他仓库里去了,不过要尽快,这是把临时钥匙,2天后就不能用了(Expiration)“。
于是,小迪拿着糖糖的临时钥匙到了京郊糖糖的仓库,取了2斤大白兔奶糖发出去了。
故事到这儿就算完满结束了。庆祝!
我理解的OAuth 1.0a 的验证过程的更多相关文章
- WP REST API: 设置和使用OAuth 1.0a Authentication(原文)
In the previous part of the series, we set up basic HTTP authentication on the server by installing ...
- Spring Security 的登录密码验证过程 UsernamePasswordAuthenticationFilter
认证过程如下 一.先判断请求(请求必须是post请求)地址是否为配置的 login-processing-url 值(默认/j_spring_security_check),如果不是,则放行,进入下一 ...
- [转]在 .NET 中远程请求 https 内容时,发生错误:根据验证过程,远程证书无效
该文原网址:http://www.cnblogs.com/xwgli/p/5487930.html 在 .NET 中远程请求 https 内容时,发生错误:根据验证过程,远程证书无效. 当访问 h ...
- C#发送邮件异常:根据验证过程,远程证书无效
今天在做发送邮件功能时,开始用qq邮箱和163邮箱都可以正常发送,后再改用我公司的邮箱和smtp时竟然报错了. 异常提示-----"根据验证过程,远程证书无效",后来通过查询资料解 ...
- 架构验证过程发现非数据类型错误 validation found non-data type errors
问题: infopath报一下错误 validation found non-data type errors 架构验证过程发现非数据类型错误 原因: 重复表字段在后台代码里要一一对应,否则报错. 错 ...
- Kerberos验证过程
参考文献: How the Kerberos Version 5 Authentication Protocol Works: Logon and Authentication SQL Kerbero ...
- Spring Security 入门(3-11)Spring Security 的登录密码验证过程 UsernamePasswordAuthenticationFilter
认证过程如下 一.先判断请求(请求必须是post请求)地址是否为配置的 login-processing-url 值(默认/j_spring_security_check),如果不是,则放行,进入下一 ...
- XmlDocument.Load(url) url是https远程时,报错" 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。" "根据验证过程,远程证书无效。"
XmlDocument.Load(url) url是https远程时,报错" 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系." "根据验证过程, ...
- C#发送邮件异常:根据验证过程,远程证书无效,何解???
/// <summary> /// 发送邮件 /// </summary> /// <param name="mailSubjct">邮件主题& ...
随机推荐
- 坑人的微信新版支付(V3.3.6)
现在微支付的需求越来越多,最近刚接到一个需要微支付的项目,于是身为程序猿的我拿到最新的微信支付接口文档(3.3.6)就开始研究微信支付.本以为应该跟支付宝差不多的感觉结果被坑了.恕在下无能, ...
- SQL Server 索引的创建原则
避免对经常更新的表进行过多的索引,并且索引中的列尽可能少.而对经常用于查询的字段(外键)应该创建索引,但要避免添加不必要的字段. 数据量小的表最好不要使用索引,由于数据较少,查询花费的时间可能比遍历索 ...
- 【Swift学习】Swift编程之旅---闭包(十一)
闭包是可以在代码中被传递和使用的自包含功能模块,它很像c和oc中的block,和.net中的lambdasbas表达式. 闭包可以捕获和存储其所在上下文中任意常量和变量的引用. 包裹着这些常量和变量的 ...
- 解决Fedora解压文件产生乱码的问题
最近有发现在使用Linux的时候,之前也遇到过在ubuntu下,最后ubuntu貌似在原生下优化了这个问题,现在换到了fedora上的时候问题又出现了,解压出来的文件中文乱码. 为了在linux下可以 ...
- SQL--子查询
什么是子查询 子查询:顾名思义,在一个查询中,有另外一个查询,这个查询就叫做,主查询的子查询. [把一个查询的结果,在另一个查询中使用就叫子查询.(将一个查询语句,作为一个结果集,供其他SQL语句使用 ...
- 简单的描述Java中的构造函数,及访问修饰符
作为一个Java 初学者,对Java的理解可能有些片面,甚至有些错误的理解,对于观看此处的您,希望您选择性观看!!! 访问修饰符: 1.常用访问修饰符: public 共有的 private 私有的 ...
- 解决IIS7.0服务和用户上传的文件分别部署在不同的电脑上时,解决权限的问题
为解决IIS服务和用户上传的文件分别部署在不同的电脑上时,解决权限的问题. 定义: A:iis服务器 B:文件服务器 步骤: 1.在B上创建一个用户[uploaduser](并设置密码) 2.给B上的 ...
- 如何在Winform界面中设计图文并茂的界面
在Winform里面,很多控件元素都是标准的,如图标.按钮.工具栏等等,所以一般设计标准的Winform界面比较快捷,但是往往这样的界面相对单调一些,特别在界面控件比较少的情况下,我们往往需要加入一些 ...
- PHP函数microtime()
定义和用法 PHP函数microtime()返回当前 Unix 时间戳和微秒数.PHP函数microtime()语法 microtime(get_as_float)PHP函数microti ...
- iOS阶段学习第六天笔记(数组)
iOS学习( ...