微信登录

微信登录

因恶意注册过多,目前只支持微信模式

网络授权到底是围绕什么展开的

首先声明,我写的东西不是什么正经的东西,如果您喜欢的是正儿八经的技术文章,那这本图书的内容可能真的不适合您,您可止步于此,昂首向前。授权并不是什么难理解的事情,可是很多技术人员在理解 OAuth2 网络授权的时候却经常犯迷糊,这里的症结就在于技术人员经常犯的一个技术性错误:“技术人员尤其新人总是条件反射得喜欢用技术或者代码的角度去理解问题和分析问题”。从人类的角度来说,授权在本质上从来都是社会问题,所以咱们还是先把授权还原到它本来的场景中去。但凡说到授权,必然就会涉及到不同的授权场景下不同的利益方就如何对某些资源的使用问题进行协商的问题。在确保各方的利益都受到安全行保护的情况下,实现彼此的价值,直白点就是各取所需,合作共赢。咱们可以先简单看一看 OAuth 诞生时的使用场景:

小美在 A 网站 “照片仓库” 保存了非常多的照片想打印,可 A 网站却并没有提供照片编辑和相册制作的功能,而 B 网站“美图羞羞”却在相册制作领域格外风骚,但是这个时候由于 A 站和 B 站由于没有数据之间安全访问和协作的机制,小美想要完成相册的制作就很尴尬,她能采取的方案如下:

1. 把照片从 A 站下载下来重新上传到 B 站上。 小美觉得实在太浪费时间,效率太低,简直是对智商的一种侮辱,于是想到第二种方法。

2. 把 A 站的账号密码告诉 B 站人员,让 B 站美图羞羞的工作人员替他操作照片的转移工作。

效率是提升了,安全性却降低了,隐私很可能就暴露了,想到摄影专家陈师傅的遭遇,小美觉得这个方案甚至还比不上第一个解决方案,于是跟小美有同样需求的小美美们开始寻找解决方案。有需求就有商机,重利当头,头破血流,金钱可以使人癫狂,为了获得金钱人却可以理性到极致,这一次面和心不和巨头们(谷歌、雅虎、微软等)第一次坐到一起共商国是,目的就是为 API 的访问授权提供一个统一开放的标准,毕竟制订标准和规则这种事情对于任何一家公司来说诱惑力都实在太大了,这可是统治阶级的核心领导层才能干的事。

在这里划下咱们的第一个重点,这个点极为重要,网络授权目的是为 API 的访问授权提供一个统一开放的标准,有了这个出发点和大前提咱们才能够真正理解 OAuth授权真正的用途,任何标准的提出都不会是简简单单为了解决某一个小需求,小问题,而是在宏观的角度上构建出解决方案,在关键细节上制订好需要共同遵守的规章。网上很多教程都是围绕 “资源授权” 对 OAuth 进行入门介绍的,导致很多人对 OAuth 的理解出现了偏差,所以在这里正本清源,咱们不要再绕着 “资源授权” 这个磨盘转了,“资源授权”只是OAuth某个使用场景下的表现形式,API 才是被 OAuth 进行授权的核心主角。API 才是不同公司的产品间相互调用服务的桥梁,资源是 API 这辆卡车携带的货物。我们使用网络 API 去请求这些资源,授予客户端(app 或者网页应用)能够通过该 API 接口获取或者操作这些资源的权限。以第三方登录为例,表面上看是我授予了某个网站或者应用访问我微信头像和用户名等资源的权限,在技术层面则是向第三方的应用开启了 API 的访问权限。

如此吹毛求疵有意义吗?有的,非常之有的,因为在社会上我们经常会上 “偷换概念” 的当,当 “偷换概念” => “以讹传讹” => “将错就错” => “约定俗称” 这条链条形成之后,对于后面的人来说,一些明明直觉上就有矛盾和冲突的表述方式,因为别人都那么说,也就逼着自己接受那就是对的东西。就像 Artificial Intelligence,多年来一直被翻译成人工智能,最近大咖们才更正这个概念,应该翻译成机器智能更为妥当,但是人工智能已然成为约定俗成的东西,那就生米煮成熟饭,都认可这个概念也就得了。再比如达尔文进化论,《theory of evolution》,中文的翻译直接把这个理论的基调给毁了,清末严复将其译成《天演论》才是最符合原作意涵的译法。生物会根据环境的变化进行不同方向的演化,演化并不代表进化,即便是同一物种,演化的方式也有不同,有的演化甚至是一种退化,有的靠强化某些机能克服环境的恶劣,有些则是选择退化生物体的机能和器官躲避恶劣环境,严复天演论的译法何其高明,后来却被才疏学浅之辈偷换了概念,可悲可叹的是后辈人,一直在这个词不达意的表述中学习所谓的知识。“物竞天择,适者生存”,为了生存,有人拿起了刀枪反抗,有人为虎作伥,还有人隐没山林,罢了罢了,活着就好~

 

kobe 2019.03.18 11:20
你真的很久不写图书了,欢迎你回归图书板块。我特别喜欢你写东西的犀利劲儿,你写的博客和图书看起来剑走偏锋,但路子感觉却是最正的,令狐冲那种放荡不羁的风格。另:老哥呀,GRASP的坑你还没填完呢。
codinget 2019.03.19 08:31
哎,哪壶不开提哪壶,提 GRASP 多打脸啊,呵呵,我写东西不打草稿,所以很容易擦枪走火,技术文章就写成了散文。
Iwtrgw 2019.03.19 08:59
终于回归了哈,GRASP是不是该更一更了 …^_^
codinget 2019.03.19 09:07
出来混,迟早是要还的,这句话果然不假,我本以为大家并不关心 GRASP 系列,没想到大家都在等它,这是我的错。
codinget 2019.03.19 11:37
有时间的时候可以帮我校验一下OAuth2 第二篇里是不是有严重的低级错误,我今天先把 OAuth2 写完,检查的任务就给你了~
Iwtrgw 2019.03.19 10:36
我感觉很好,没问题
一口老血 2019.03.19 02:33
你终于回归图书板块了,先把 GRASP 的坑填了吧。OAuth2我虽然看过的教程也不少,对你作品的期待值却最高,写得挺好,闲聊也能聊得这么清新脱俗。
cchealther 2019.03.21 11:21
学习了
codinget 2019.03.21 01:32
能对大家的学习产生帮助那我就没白花那些时间和精力
阿杰 2019.03.23 09:30
API现在工作用的非常多,感谢博主的奉献
王大狗_Bibili 2019.05.27 10:48
从B站专门过来注册的,当初找laravel 容器的时候看到的你,现在找OAuth2的时候又看到你了。以后跟你混了
codinget 2019.05.27 10:51
哈哈,只要你能接受我的风格就好
王大狗_Bibili 2019.05.27 10:53
现在是学习者,以前就是增删改查。换个工作老大跟我说CURD是个人都会,技术文档看的累CSDN上全部都是在复制黏贴,还是你这种散文看着舒服一点。
codinget 2019.05.27 11:00
必要的时候还是要逼着自己看技术文档,这也是一项非常有竞争力的能力,只要能咬牙啃下一套技术文档,并且能解读出文档里的核心理念,以后再看别的文档就有信心了。就像OAuth2的文档,大家都在转载,却没有自己深入研究和推理过,导致错误的点没人纠正,一直错误的传
Stoa911 2019.07.02 10:18
老哥 那微信支付是不是也算OAuth2.0的范畴(看到这句话 在技术层面则是向第三方的应用开启了 API 的访问权限。)
codinget 2019.07.02 10:53
对,都是授权那点东西,授权的流程可以按照规范的来,也可以灵活根据企业的要求改变规则,Oauth2.0中介绍的是最常用的几种授权模式,也可以自定义,好好掌握一下Oauth2.0就可以为很多东西打好基础,这也是为啥我一再强调它的重要性
team2017 2020.12.23 02:02
第一次看这个网站里的图书,之前都是执着于视频 能让我快速理解不懂得原理,结果发现文字竟然也可以把复杂的原理通俗的讲出来,简直太棒了!!期待后续能有新的图书系列哇~
codinget 2020.12.23 02:08
我的图书到处都充斥着我个人的放浪特色,能接受就好。
eashin 2021.07.22 06:28
点到头像,出现报错的页面,一堆debug信息,好像能看到用户表字段...
codinget 2021.07.22 06:31
新版本正在裸奔,谢谢朋友的提醒
codinget 2021.07.22 07:13
已修改,再次感谢朋友的提示。
编程原力 京ICP备17045322号-2
版权所有, 侵权者追究法律责任