本書介紹了關於OAuth 2及其應用於開放平台,全書共分8章。
第1章介紹了OAuth 2的四種授權模式,為後續章節奠定基礎。
第2章簡述開放平台的架構和系統組成,給出開放平台功能的宏觀概念。
第3章從實戰角度詳細介紹OAuth 2在開放授權系統中的應用,包括流程、參數及四種授權模式的變種。
第4章討論了OpenID的整合,儘管它不屬於OAuth 2標準,但在開放平台業務中扮演重要角色。
第5章專注於基於授權碼的授權模式,探討生成回呼地址和code的方法。
第6章介紹授權過程中使用的加密和簽名算法,以及授權資訊的更新支持。
第7章比較了不同類型的授權資訊,幫助讀者根據實際情況選擇。
最後,第8章提供基於Spring Security實現OAuth 2四種標準授權模式的範例程式,供讀者參考。
【本書看點】
★OAuth 2完整詳細說明
☆開放平臺架構,API閘道系統
★授權模式,獲取code,授權用戶端及密碼模式
☆OpenID連接OAuth 2,雪花及Hash演算法、UnionID
★授權碼回呼位址實際範例、FaaS介紹
☆簽名演算法
★授權資料、access_token詳解、JWT實戰
☆以Spring Security為基礎的OAuth 2實戰
作者簡介:
糜鵬程
高級工程師,主要負責開放平臺相關的研發工作,對開放平臺中各系統的實現有深入研究,目前維護的開放平臺系統,日活調用量50億左右。
作者序
前言
為什麼要寫這本書
OAuth 從2006 年誕生以來,經過1.0 和2.0 兩個版本迭代後,在2011 年左右趨於成熟。隨後大量的場景開始應用OAuth 2.0 (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的標準。之所以所有的實戰授權模式都預設整合OpenlD,是因為在開放平臺的環境下,OpenID 在相關業務中起著重要作用。由於要用到OpenID,因此本書對OpenID 的生成方案進行了詳細探討,提供了多種OpenID 落地方案,供讀者根據自身業務場景和體量進行選擇。
第5 章:四種授權模式中基於授權碼的授權模式是最為通用的,而在該模式下生成回呼位址和code 是必不可少的一 步,因此本章對如何生成回呼位址和code 進行了詳細探討。
第6 章:針對授權過程中用到的加密和簽名演算法進行了介紹。無論採用什麼授權模式,都要返回授權資訊。同時,在某些模式下,還會支援授權資訊刷新。
第7 章:針對以上內容,本章探討了常用的不同類型的授權資訊,並對比了它們各自的優勢和劣勢,以便讀者可以根據實際情況在生產中進行選擇。
第8 章:以Spring Security 為基礎實現了OAuth2 的四種標準授權模式的簡單程式範例。
前言
為什麼要寫這本書
OAuth 從2006 年誕生以來,經過1.0 和2.0 兩個版本迭代後,在2011 年左右趨於成熟。隨後大量的場景開始應用OAuth 2.0 (OAuth 2) 來實現自身業務,其中最為突出的應用場景便是開放平臺。
大部分的社群網站都會基於開放平臺,透過開放平臺將自身能力開放給第三方應用程式開發者,使他們在快速開發各種類型的應用,極大地豐富了使用者的體驗。隨後,進一 步豐富自身的業務場景。
與此同時,各種開發平臺也如雨後春筍一 般迅速發展。據統計,目前的開放平臺已經達到幾十家。相信隨著網際網路的發展和人工成本的提高...
目錄
第1 章 OAuth 2 概述
1.1 OAuth 2 的定義
1.1.1 官方定義
1.1.2 開放平臺中的定義
1.2 OAuth 2 的四種授權模式
1.2.1 隱式授權模式
1.2.2 授權碼授權模式
1.2.3 授信用戶端密碼模式
1.2.4 授信用戶端模式
第2 章 開放平臺整體架構
2.1 功能架構
2.2 API 閘道系統
2.2.1 API 整體架構
2.2.2 API 閘道與授權系統的關係
2.3 主控台系統
2.3.1 功能概述
2.3.2 主控台系統與授權系統的關係
2.4 服務市場
第3 章 實戰中的授權模式
3.1 授權碼授權模式的應用
3.1.1 獲取code
3.1.2 獲取授權資訊
3.1.3 更新授權資訊
3.2 使用者名稱密碼授權碼授權模式的應用
3.3 授信用戶端密碼模式的應用
3.4 授信用戶端模式的應用
3.4.1 標準授信用戶端模式
3.4.2 自研應用
3.4.3 自研授信用戶端授權
3.5 外掛程式化授權模式的應用
3.5.1 普通應用場景
3.5.2 官方應用場景
第4 章 OpenID 從理論到實戰
4.1 OpenID 概述
4.1.1 OpenID 定義
4.1.2 OpenID 使用流程
4.1.3 OpenID 與OAuth 2
4.2 基於自動增加ID 的OpenID 方案
4.2.1 概述
4.2.2 基於單機模式下自動增加ID 的實現方案
4.2.3 基於雪花演算法的OpenID 生成方案
4.2.4 基於自動增加ID 的OpenID 生成方案總結
4.3 基於Hash 演算法的OpenID 方案
4.3.1 概述
4.3.2 Hash 演算法簡介
4.3.3 使用Hash 函數計算OpenID
4.3.4 基於Hash 演算法的OpenID 方案總結
4.4 基於對稱加密演算法的OpenID 方案
4.4.1 概述
4.4.2 對稱加密演算法簡介
4.4.3 基於對稱加密演算法的OpenID 實踐
4.4.4 基於對稱加密演算法的OpenID 方案總結
4.5 基於嚴格單調函數的OpenID 方案
4.5.1 相關概念
4.5.2 基於嚴格單調函數的OpenID 實踐
4.5.3 基於嚴格單調函數的OpenID 方案總結
4.6 基於向量加法的OpenID 方案
4.6.1 UUID 簡介
4.6.2 基於向量加法的OpenID 實踐
4.6.3 矩陣乘法想法擴充
4.7 OpenID 小結
4.8 UnionID
4.8.1 UnionID 簡介
4.8.2 UnionID 劃分方案
4.8.3 基於自動增加ID 的UnionID 方案
4.8.4 基於Hash 演算法的UnionID 方案
4.8.5 基於對稱加密演算法的UnionID 方案
4.8.6 基於嚴格單調函數的UnionID 方案
4.8.7 基於向量加法的UnionID 方案
4.8.8 UnionID 總結
第5 章 授權碼授權模式回呼位址實戰
5.1 普通回呼位址
5.2 字元替換回呼位址
5.2.1 場景引入
5.2.2 解決方案
5.2.3 基於字元替換的回呼位址方案總結
5.3 自訂函數回呼位址
5.3.1 FaaS 簡介
5.3.2 FaaS 實踐
5.3.3 自訂函數回呼位址實踐
5.4 code 生成方案
5.4.1 基於亂數產生code 方案
5.4.2 解決隨機code 衝突
5.5 code 消費
5.5.1 標準code 消費策略
5.5.2 code消費策略最佳化
第6 章 簽名
6.1 簽名演算法引入
6.2 非對稱加密簡介
6.3 進一步探討簽名演算法
6.4 常見的簽名演算法
6.4.1 非對稱簽名演算法
6.4.2 開放平臺實踐中使用的簽名演算法
6.5 開放平臺簽名實例
第7 章 授權資訊
7.1 access_token 簡介
7.1.1 短生命週期的可更新access_token
7.1.2 短生命週期的無更新access_token
7.1.3 永不過期的access_token
7.2 隨機字元實現
7.2.1 短生命週期的可更新access_token
7.2.2 短生命週期的無更新access_token
7.2.3 永不過期的access_token
7.2.4 基於隨機字元的access_token 方案總結
7.2.5 隨機字元方案的缺陷及防禦
7.3 JWT 實現
7.3.1 JWT 簡介
7.3.2 JWT 簡單實戰
7.3.3 基於JWT 實現的授權資訊
7.3.4 基於JWT 的access_token 方案總結
7.4 許可權套件與Scope
7.4.1 Scope 概念引入
7.4.2 開放平臺中的Scope 實現細節
7.5 SDK
第8 章 基於Spring Security 的OAuth 2 實戰
8.1 隱式授權模式
8.1.1 授權系統的相關實現
8.1.2 開放閘道的相關實現
8.1.3 相關實現的驗證
8.2 授權碼授權模式
8.2.1 授權系統的相關實現
8.2.2 開放閘道的相關實現
8.2.3 相關實現的驗證
8.3 授信用戶端密碼模式
8.3.1 授權系統的相關實現
8.3.2 開放閘道的相關實現
8.3.3 相關實現的驗證
8.4 授信用戶端模式
8.4.1 授權系統的相關實現
8.4.2 開放閘道的相關實現
8.4.3 相關實現的驗證
8.5 四種授權模式總結
8.6 JWT
8.6.1 授權系統的相關實現
8.6.2 開放閘道的相關實現
8.6.3 相關實現的驗證
第1 章 OAuth 2 概述
1.1 OAuth 2 的定義
1.1.1 官方定義
1.1.2 開放平臺中的定義
1.2 OAuth 2 的四種授權模式
1.2.1 隱式授權模式
1.2.2 授權碼授權模式
1.2.3 授信用戶端密碼模式
1.2.4 授信用戶端模式
第2 章 開放平臺整體架構
2.1 功能架構
2.2 API 閘道系統
2.2.1 API 整體架構
2.2.2 API 閘道與授權系統的關係
2.3 主控台系統
2.3.1 功能概述
2.3.2 主控台系統與授權系統的關係
2.4 服務市場
第3 章 實戰中的授權模式
3.1 授權碼授權模式的應用
3.1.1 獲取code
3.1.2 獲取授權資訊
3.1.3 更新授權資訊...