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

首先声明,我写的东西不是什么正经的东西,如果您喜欢的是正儿八经的技术文章,那这本图书的内容可能真的不适合您,您可止步于此,昂首向前。授权并不是什么难理解的事情,可是很多技术人员在理解 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》,中文的翻译直接把这个理论的基调给毁了,清末严复将其译成《天演论》才是最符合原作意涵的译法。生物会根据环境的变化进行不同方向的演化,演化并不代表进化,即便是同一物种,演化的方式也有不同,有的演化甚至是一种退化,有的靠强化某些机能克服环境的恶劣,有些则是选择退化生物体的机能和器官躲避恶劣环境,严复天演论的译法何其高明,后来却被才疏学浅之辈偷换了概念,可悲可叹的是后辈人,一直在这个词不达意的表述中学习所谓的知识。“物竞天择,适者生存”,为了生存,有人拿起了刀枪反抗,有人为虎作伥,还有人隐没山林,罢了罢了,活着就好~