OAuth 2實(shí)戰(zhàn)(圖靈出品)
定 價(jià):89 元
- 作者:[美] 賈斯廷·里徹(Justin Richer),[瑞士] 安東尼奧·桑索(Antonio Sanso) 著,楊鵬 譯
- 出版時(shí)間:2019/4/1
- ISBN:9787115509376
- 出 版 社:人民郵電出版社
- 中圖法分類:TP393.08
- 頁碼:279
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書深入探討OAuth的運(yùn)行機(jī)制,詳細(xì)介紹如何在不安全的網(wǎng)絡(luò)環(huán)境下正確使用、部署OAuth,確保安全認(rèn)證,是目前關(guān)于OAuth全面深入的參考資料。書中內(nèi)容分為四大部分,分別概述OAuth 2.0協(xié)議,如何構(gòu)建一個(gè)完整的OAuth 2.0生態(tài)系統(tǒng),OAuth 2.0生態(tài)系統(tǒng)中各個(gè)部分可能出現(xiàn)的漏洞及其如何規(guī)避,以及更外圍生態(tài)系統(tǒng)中的標(biāo)準(zhǔn)和規(guī)范。
OAuth是互聯(lián)網(wǎng)公司廣泛使用的協(xié)議,守護(hù)著全球不計(jì)其數(shù)的Web API。本書從實(shí)戰(zhàn)角度出發(fā),帶你領(lǐng)略O(shè)Auth生態(tài)系統(tǒng)的秀美風(fēng)光,并學(xué)會自己構(gòu)建安全的客戶端、受保護(hù)資源和服務(wù)器,透徹理解OAuth 2的實(shí)現(xiàn)和部署流程,不僅知其然,還知其所以然。
本書重點(diǎn)講解以下內(nèi)容:
- OAuth 2的設(shè)計(jì)理念和重要性;
- 構(gòu)建OAuth 2生態(tài)系統(tǒng);
- OAuth 2生態(tài)系統(tǒng)的常見漏洞;
- 針對OAuth令牌的常見攻擊;
- 動態(tài)客戶端注冊。
“非常實(shí)用,告訴我們什么該做,什么不該做。”——Ian Glazer,Salesforce公司身份管理總監(jiān)
“這本書的深度和廣度令人折服,推薦所有Web開發(fā)人員都看看!薄猅homas O'Rourke,軟件工程師
“內(nèi)容簡潔、結(jié)構(gòu)清晰,讓我對OAuth有了透徹了解!薄猂oy Folkker,***讀者
【作者介紹】
賈斯廷·里徹(Justin Richer),系統(tǒng)架構(gòu)師、軟件工程師,OAuth工作組重要成員,深度參與了OAuth 2核心規(guī)范的制定,任多個(gè)擴(kuò)展規(guī)范的技術(shù)編輯,并領(lǐng)導(dǎo)開發(fā)了基于OAuth的服務(wù)端與客戶端套件MITREid Connect。
安東尼奧·桑索(Antonio Sanso),就職于Adobe公司,長期從事安全研究工作。應(yīng)用密碼學(xué)博士,持有多項(xiàng)Web技術(shù)專利。
【譯者介紹】
楊鵬,畢業(yè)于四川大學(xué)電子信息學(xué)院信息安全研究所,目前從事Web前端開發(fā),同時(shí)廣泛涉獵各技術(shù)領(lǐng)域。
第 一部分 起步
第 1章 OAuth 2.0是什么,為什么要關(guān)心它 2
1.1 OAuth 2.0是什么 2
1.2 黑暗的舊時(shí)代:憑據(jù)共享與憑據(jù)盜用 5
1.3 授權(quán)訪問 9
1.3.1 超越HTTP 基本認(rèn)證協(xié)議和密碼共享反模式 10
1.3.2 授權(quán)委托:重要性及應(yīng)用 11
1.3.3 用戶主導(dǎo)的安全與用戶的選擇 12
1.4 OAuth 2.0:優(yōu)點(diǎn)、缺點(diǎn)和丑陋的方面 13
1.5 OAuth 2.0 不能做什么 15
1.6 小結(jié) 16
第 2章 OAuth之舞 17
2.1 OAuth 2.0協(xié)議概覽:獲取和使用令牌 17
2.2 OAuth 2.0授權(quán)許可的完整過程 17
2.3 OAuth中的角色:客戶端、授權(quán)服務(wù)器、資源擁有者、受保護(hù)資源 25
2.4 OAuth的組件:令牌、權(quán)限范圍和授權(quán)許可 27
2.4.1 訪問令牌 27
2.4.2 權(quán)限范圍 27
2.4.3 刷新令牌 27
2.4.4 授權(quán)許可 28
2.5 OAuth的角色與組件間的交互:后端信道、前端信道和端點(diǎn) 29
2.5.1 后端信道通信 29
2.5.2 前端信道通信 30
2.6 小結(jié) 32
第二部分 構(gòu)建OAuth環(huán)境
第3章 構(gòu)建簡單的OAuth客戶端 34
3.1 向授權(quán)服務(wù)器注冊O(shè)Auth客戶端 34
3.2 使用授權(quán)碼許可類型獲取令牌 36
3.2.1 發(fā)送授權(quán)請求 37
3.2.2 處理授權(quán)響應(yīng) 39
3.2.3 使用state參數(shù)添加跨站保護(hù) 40
3.3 使用令牌訪問受保護(hù)資源 41
3.4 刷新訪問令牌 43
3.5 小結(jié) 47
第4章 構(gòu)建簡單的OAuth受保護(hù)資源 48
4.1 解析HTTP請求中的OAuth令牌 49
4.2 根據(jù)數(shù)據(jù)存儲驗(yàn)證令牌 50
4.3 根據(jù)令牌提供內(nèi)容 53
4.3.1 不同的權(quán)限范圍對應(yīng)不同的操作 54
4.3.2 不同的權(quán)限范圍對應(yīng)不同的數(shù)據(jù)結(jié)果 56
4.3.3 不同的用戶對應(yīng)不同的數(shù)據(jù)結(jié)果 58
4.3.4 額外的訪問控制 61
4.4 小結(jié) 61
第5章 構(gòu)建簡單的OAuth授權(quán)服務(wù)器 62
5.1 管理OAuth客戶端注冊 62
5.2 對客戶端授權(quán) 64
5.2.1 授權(quán)端點(diǎn) 64
5.2.2 客戶端授權(quán) 66
5.3 令牌頒發(fā) 68
5.3.1 對客戶端進(jìn)行身份認(rèn)證 69
5.3.2 處理授權(quán)許可請求 70
5.4 支持刷新令牌 72
5.5 增加授權(quán)范圍的支持 74
5.6 小結(jié) 77
第6章 現(xiàn)實(shí)世界中的OAuth 2.0 78
6.1 授權(quán)許可類型 78
6.1.1 隱式許可類型 79
6.1.2 客戶端憑據(jù)許可類型 81
6.1.3 資源擁有者憑據(jù)許可類型 85
6.1.4 斷言許可類型 89
6.1.5 選擇合適的許可類型 91
6.2 客戶端部署 92
6.2.1 Web應(yīng)用 93
6.2.2 瀏覽器應(yīng)用 93
6.2.3 原生應(yīng)用 94
6.2.4 處理密鑰 99
6.3 小結(jié) 100
第三部分 OAuth 2.0的實(shí)現(xiàn)與漏洞
第7章 常見的客戶端漏洞 102
7.1 常規(guī)客戶端安全 102
7.2 針對客戶端的CSRF攻擊 103
7.3 客戶端憑據(jù)失竊 105
7.4 客戶端重定向URI注冊 107
7.4.1 通過Referrer盜取授權(quán)碼 108
7.4.2 通過開放重定向器盜取令牌 111
7.5 授權(quán)碼失竊 113
7.6 令牌失竊 114
7.7 原生應(yīng)用最佳實(shí)踐 115
7.8 小結(jié) 116
第8章 常見的受保護(hù)資源漏洞 117
8.1 受保護(hù)資源會受到什么攻擊 117
8.2 受保護(hù)資源端點(diǎn)設(shè)計(jì) 118
8.2.1 如何保護(hù)資源端點(diǎn) 118
8.2.2 支持隱式許可 126
8.3 令牌重放 128
8.4 小結(jié) 130
第9章 常見的授權(quán)服務(wù)器漏洞 131
9.1 常規(guī)安全 131
9.2 會話劫持 131
9.3 重定向URI篡改 134
9.4 客戶端假冒 138
9.5 開放重定向器 140
9.6 小結(jié) 142
第 10章 常見的OAuth令牌漏洞 143
10.1 什么是bearer令牌 143
10.2 使用bearer令牌的風(fēng)險(xiǎn)及注意事項(xiàng) 144
10.3 如何保護(hù)bearer令牌 145
10.3.1 在客戶端上 145
10.3.2 在授權(quán)服務(wù)器上 146
10.3.3 在受保護(hù)資源上 146
10.4 授權(quán)碼 147
10.5 小結(jié) 152
第四部分 更進(jìn)一步
第 11章 OAuth令牌 154
11.1 OAuth令牌是什么 154
11.2 結(jié)構(gòu)化令牌:JWT 155
11.2.1 JWT的結(jié)構(gòu) 156
11.2.2 JWT聲明 157
11.2.3 在服務(wù)器上實(shí)現(xiàn)JWT 158
11.3 令牌的加密保護(hù):JOSE 160
11.3.1 使用HS256的對稱簽名 161
11.3.2 使用RS256 的非對稱簽名 162
11.3.3 其他令牌保護(hù)方法 165
11.4 在線獲取令牌信息:令牌內(nèi)省 166
11.4.1 內(nèi)省協(xié)議 167
11.4.2 構(gòu)建內(nèi)省端點(diǎn) 168
11.4.3 發(fā)起令牌內(nèi)省請求 170
11.4.4 將內(nèi)省與JWT結(jié)合 171
11.5 支持令牌撤回的令牌生命周期管理 172
11.5.1 令牌撤回協(xié)議 172
11.5.2 實(shí)現(xiàn)令牌撤回端點(diǎn) 173
11.5.3 發(fā)起令牌撤回請求 174
11.6 OAuth 令牌的生命周期 175
11.7 小結(jié) 177
第 12章 動態(tài)客戶端注冊 178
12.1 服務(wù)器如何識別客戶端 178
12.2 運(yùn)行時(shí)的客戶端注冊 179
12.2.1 協(xié)議的工作原理 180
12.2.2 為什么要使用動態(tài)注冊 181
12.2.3 實(shí)現(xiàn)注冊端點(diǎn) 183
12.2.4 實(shí)現(xiàn)客戶端自行注冊 186
12.3 客戶端元數(shù)據(jù) 188
12.3.1 核心客戶端元數(shù)據(jù)字段名表 188
12.3.2 可讀的客戶端元數(shù)據(jù)國際化 190
12.3.3 軟件聲明 191
12.4 管理動態(tài)注冊的客戶端 192
12.4.1 管理協(xié)議的工作原理 193
12.4.2 實(shí)現(xiàn)動態(tài)客戶端注冊管理API 195
12.5 小結(jié) 202
第 13章 將OAuth 2.0用于用戶身份認(rèn)證 203
13.1 為什么OAuth 2.0不是身份認(rèn)證協(xié)議 203
13.2 OAuth到身份認(rèn)證協(xié)議的映射 205
13.3 OAuth 2.0是如何使用身份認(rèn)證的 207
13.4 使用OAuth 2.0進(jìn)行身份認(rèn)證的常見陷阱 208
13.4.1 將訪問令牌作為身份認(rèn)證的證明 208
13.4.2 將對受保護(hù)API的訪問作為身份認(rèn)證的證明 209
13.4.3 訪問令牌注入 209
13.4.4 缺乏目標(biāo)受眾限制 210
13.4.5 無效用戶信息注入 210
13.4.6 不同身份提供者的協(xié)議各不相同 210
13.5 OpenID Connect:一個(gè)基于OAuth 2.0的認(rèn)證和身份標(biāo)準(zhǔn) 210
13.5.1 ID令牌 211
13.5.2 UserInfo端點(diǎn) 212
13.5.3 動態(tài)服務(wù)器發(fā)現(xiàn)與客戶端注冊 214
13.5.4 與OAuth 2.0的兼容性 216
13.5.5 高級功能 216
13.6 構(gòu)建一個(gè)簡單的OpenID Connect系統(tǒng) 217
13.6.1 生成ID 令牌 217
13.6.2 創(chuàng)建UserInfo 端點(diǎn) 219
13.6.3 解析ID 令牌 221
13.6.4 獲取UserInfo 222
13.7 小結(jié) 224
第 14章 使用OAuth 2.0的協(xié)議和配置規(guī)范 225
14.1 UMA 225
14.1.1 UMA的重要性 226
14.1.2 UMA協(xié)議的工作原理 227
14.2 HEART 237
14.2.1 HEART的重要性 237
14.2.2 HEART規(guī)范 238
14.2.3 HEART機(jī)制維度的配置規(guī)范 238
14.2.4 HEART 語義維度的配置規(guī)范 239
14.3 iGov 239
14.3.1 iGov的重要性 240
14.3.2 iGov展望 240
14.4 小結(jié) 240
第 15章 bearer令牌以外的選擇 241
15.1 為什么不能滿足于bearer令牌 241
15.2 PoP令牌 242
15.2.1 PoP令牌的請求與頒發(fā) 245
15.2.2 在受保護(hù)資源上使用PoP令牌 246
15.2.3 驗(yàn)證PoP令牌請求 246
15.3 PoP令牌實(shí)現(xiàn) 247
15.3.1 頒發(fā)令牌和密鑰 247
15.3.2 生成簽名頭部并發(fā)送給受保護(hù)資源 249
15.3.3 解析頭部、內(nèi)省令牌并驗(yàn)證簽名 250
15.4 TLS令牌綁定 252
15.5 小結(jié) 254
第 16章 歸納總結(jié) 255
16.1 正確的工具 255
16.2 做出關(guān)鍵決策 256
16.3 更大范圍的生態(tài)系統(tǒng) 257
16.4 社區(qū) 257
16.5 未來 258
16.6 小結(jié) 259
附錄A 代碼框架介紹 260
附錄B 補(bǔ)充代碼清單 265