
前言
为什么要写这本书
OAuth从2006年诞生以来,经过1.0和2.0两个版本迭代后,在2011年左右趋于成熟。随后大量的场景开始应用OAuth 2.0(OAuth 2)来实现自身业务,其中最为突出的应用场景便是开放平台。
国内最成功的开放平台案例莫过于微信。微信公众号基于开放平台将微信打造成一个“航空母舰”,通过开放平台将自身能力开放给第三方应用开发者,使他们在微信的管控下快速开发各种类型的应用,极大地丰富了微信用户的体验。随后,微信更是推出微信小程序,进一步丰富自身的业务场景。
与此同时,国内各种开发平台也如雨后春笋一般迅速发展。据统计,目前的开放平台已经达到几十家,如淘宝、京东、抖音、快手及拼多多等开放平台。相信随着互联网的发展和人工成本的提高,越来越多的企业会选择通过开放平台将自己的能力对外开放,从而和广大的第三方应用开发者合作共建、互利共赢。
在这种大环境下,开放平台的搭建需求也将越来越多。在开放平台中,有很多子系统通过相互配合来完成对外开放的需求,而开放授权系统是其中非常重要的一环。目前,开放授权系统均是基于OAuth 2开发的,但是在实际开发中需要根据自己的实际情况进行一些流程的修改,以适应自身的场景,同时在基于OAuth 2实现开放授权系统的过程中有很多细节需要进行设计,一旦某些细节设计不合理将会对系统造成重大损害。
目前,国内关于开放授权系统搭建的完整资料较少,市面上关于开放授权系统的材料只有一本《OAuth 2实战》,这本书很好地阐述了OAuth 2如何进行落地,并对其中的相关细节进行了探讨。但是,随着时间的推移,该书中很多方案已经被更简单的方案所替代,同时该书中也缺少很多在基于OAuth 2实现开放平台时所需要的细节方案。
为了能提供一套基于OAuth 2协议来服务于当代开放授权系统的详细方案,完善一些在其他资料中没有提到的细节,也为了给开放平台开发的相关工程师提供一套完整的参考资料,编者萌发了撰写本书的想法。
本书特色
本书以开放平台中的实际应用为标准,对相关的理论介绍点到即止,并从实践经验出发,对开放授权系统中各种场景的实现步骤和方案细节进行详细介绍。本书更是首次对回调地址和OpenID相关内容进行了详细探讨,并给出了可落地的方案。读者完全可以基于本书的指导来搭建属于自己的并且能应用于实际生产的开放授权系统。
读者对象
• OAuth 2研究者和爱好者。
• 开放平台相关的技术人员和运营人员。
• 第三方应用开发者。
关于本书
本书没有对OAuth 2协议进行深入探讨,但是本书讨论的开放授权系统是基于OAuth 2来展开的。读者如果了解OAuth 2协议,则可以很容易地跟进本书所阐述的内容。不过,即使不了解OAuth 2协议,也不用担心,本书会在相关的章节中对每个流程进行介绍,因此读者完全可以依靠本书来学习和了解OAuth 2。
因为本书中的一些算法示例使用的是Java代码,所以需要读者具备一定的Java代码基础。而最后一章使用Spring Security进行案例演示,因此需要读者有一定的Spring相关的开发经验。
下面对本书所覆盖的内容进行简单介绍。
第1章:针对OAuth 2所提供的四种授权模式进行了介绍,以便作为后续所有内容探讨的基础。
第2章:针对开放平台整体架构和系统组成进行了简单介绍,为读者提供了一个开放平台功能的宏观概念,从而能更好地理解后续开放授权系统的功能实现。
第3章:基于实战,对OAuth 2协议在开放授权系统实战过程中的详细流程和参数进行了介绍,同时对开放授权系统实战过程中一些基于OAuth 2的四种授权模式的轻变种进行了详细介绍。通过这些轻变种授权模式能更有效地支撑实际业务场景。
第4章:在上述所提到的各种实战场景的授权模式中均默认集成了OpenID。而OpenID本来是一种在OAuth 2上构建的账号安全体系,不属于OAuth 2的标准。之所以所有的实战授权模式都默认集成OpenID,是因为在开放平台的环境下,OpenID在相关业务中起着重要作用。由于要用到OpenID,因此本书对OpenID的生成方案进行了详细探讨,提供了多种OpenID落地方案,供读者根据自身业务场景和体量进行选择。
第5章:四种授权模式中基于授权码的授权模式是最为通用的,而在该模式下生成回调地址和code是必不可少的一步,因此本章对如何生成回调地址和code进行了详细探讨。
第6章:针对授权过程中用到的加密和签名算法进行了介绍。无论采用什么授权模式,都要返回授权信息。同时,在某些模式下,还会支持授权信息刷新。
第7章:针对以上内容,本章探讨了常用的不同类型的授权信息,并对比了它们各自的优势和劣势,以便读者可以根据实际情况在生产中进行选择。
第8章:以Spring Security为基础实现了OAuth 2的四种标准授权模式的简单代码示例。