《OAuth 2实战》[美] 贾斯廷·里彻 | PDF下载|ePub下载
创建
查看
3
类别: 科技
作者:
[美] 贾斯廷·里彻
/
[瑞士] 安东尼奥·桑索
出版社: 人民邮电出版社
原作名: OAuth 2 in Action
译者: 杨鹏
出版年: 2019-4
页数: 296
定价: 89.00元
装帧: 平装
丛书: 图灵程序设计丛书·网络安全系列
ISBN: 9787115509376
出版社: 人民邮电出版社
原作名: OAuth 2 in Action
译者: 杨鹏
出版年: 2019-4
页数: 296
定价: 89.00元
装帧: 平装
丛书: 图灵程序设计丛书·网络安全系列
ISBN: 9787115509376
内容简介 · · · · · ·
本书深入探讨OAuth的运行机制,详细介绍如何在不安全的网络环境下正确使用、部署OAuth,确保安全认证,是目前关于OAuth最全面深入的参考资料。书中内容分为四大部分,分别概述OAuth 2.0协议,如何构建一个完整的OAuth 2.0生态系统,OAuth 2.0生态系统中各个部分可能出现的漏洞及其如何规避,以及更外围生态系统中的标准和规范。
作者简介 · · · · · ·
贾斯廷·里彻(Justin Richer),系统架构师、软件工程师,OAuth工作组重要成员,深度参与了OAuth 2核心规范的制定,任多个扩展规范的技术编辑,并领导开发了基于OAuth的服务端与客户端套件MITREid Connect。
安东尼奥·桑索(Antonio Sanso),就职于Adobe公司,长期从事安全研究工作。应用密码学博士,持有多项Web技术专利。
目录 · · · · · ·
第一部分 起 步
第1章 OAuth 2.0是什么,为什么要关心它 2
1.1 OAuth 2.0是什么 2
1.2 黑暗的旧时代:凭据共享与凭据盗用 5
1.3 授权访问 9
1.3.1 超越HTTP基本认证协议和密码共享反模式 10
1.3.2 授权委托:重要性及应用 11
1.3.3 用户主导的安全与用户的选择 12
1.4 OAuth 2.0:优点、缺点和丑陋的方面 13
1.5 OAuth 2.0不能做什么 15
1.6 小结 16
第2章 OAuth之舞 17
2.1 OAuth 2.0协议概览:获取和使用令牌 17
2.2 OAuth 2.0授权许可的完整过程 17
2.3 OAuth中的角色:客户端、授权服务器、资源拥有者、受保护资源 25
2.4 OAuth的组件:令牌、权限范围和授权许可 27
2.4.1 访问令牌 27
2.4.2 权限范围 27
2.4.3 刷新令牌 27
2.4.4 授权许可 28
2.5 OAuth的角色与组件间的交互:后端信道、前端信道和端点 29
2.5.1 后端信道通信 29
2.5.2 前端信道通信 30
2.6 小结 32
第二部分 构建OAuth环境
第3章 构建简单的OAuth客户端 34
3.1 向授权服务器注册OAuth客户端 34
3.2 使用授权码许可类型获取令牌 36
3.2.1 发送授权请求 37
3.2.2 处理授权响应 39
3.2.3 使用state参数添加跨站保护 40
3.3 使用令牌访问受保护资源 41
3.4 刷新访问令牌 43
3.5 小结 47
第4章 构建简单的OAuth受保护资源 48
4.1 解析HTTP请求中的OAuth令牌 49
4.2 根据数据存储验证令牌 50
4.3 根据令牌提供内容 53
4.3.1 不同的权限范围对应不同的操作 54
4.3.2 不同的权限范围对应不同的数据结果 56
4.3.3 不同的用户对应不同的数据结果 58
4.3.4 额外的访问控制 61
4.4 小结 61
第5章 构建简单的OAuth授权服务器 62
5.1 管理OAuth客户端注册 62
5.2 对客户端授权 64
5.2.1 授权端点 64
5.2.2 客户端授权 66
5.3 令牌颁发 68
5.3.1 对客户端进行身份认证 69
5.3.2 处理授权许可请求 70
5.4 支持刷新令牌 72
5.5 增加授权范围的支持 74
5.6 小结 77
第6章 现实世界中的OAuth 2.0 78
6.1 授权许可类型 78
6.1.1 隐式许可类型 79
6.1.2 客户端凭据许可类型 81
6.1.3 资源拥有者凭据许可类型 85
6.1.4 断言许可类型 89
6.1.5 选择合适的许可类型 91
6.2 客户端部署 92
6.2.1 Web应用 93
6.2.2 浏览器应用 93
6.2.3 原生应用 94
6.2.4 处理密钥 99
6.3 小结 100
第三部分 OAuth 2.0 的实现与漏洞
第7章 常见的客户端漏洞 102
7.1 常规客户端安全 102
7.2 针对客户端的CSRF攻击 103
7.3 客户端凭据失窃 105
7.4 客户端重定向URI注册 107
7.4.1 通过Referrer盗取授权码 108
7.4.2 通过开放重定向器盗取令牌 111
7.5 授权码失窃 113
7.6 令牌失窃 114
7.7 原生应用最佳实践 115
7.8 小结 116
第8章 常见的受保护资源漏洞 117
8.1 受保护资源会受到什么攻击 117
8.2 受保护资源端点设计 118
8.2.1 如何保护资源端点 118
8.2.2 支持隐式许可 126
8.3 令牌重放 128
8.4 小结 130
第9章 常见的授权服务器漏洞 131
9.1 常规安全 131
9.2 会话劫持 131
9.3 重定向URI篡改 134
9.4 客户端假冒 138
9.5 开放重定向器 140
9.6 小结 142
第10章 常见的OAuth令牌漏洞 143
10.1 什么是bearer令牌 143
10.2 使用bearer令牌的风险及注意事项 144
10.3 如何保护bearer令牌 145
10.3.1 在客户端上 145
10.3.2 在授权服务器上 146
10.3.3 在受保护资源上 146
10.4 授权码 147
10.5 小结 152
第四部分 更进一步
第11章 OAuth令牌 154
11.1 OAuth令牌是什么 154
11.2 结构化令牌:JWT 155
11.2.1 JWT的结构 156
11.2.2 JWT声明 157
11.2.3 在服务器上实现JWT 158
11.3 令牌的加密保护:JOSE 160
11.3.1 使用HS256的对称签名 161
11.3.2 使用RS256的非对称签名 162
11.3.3 其他令牌保护方法 165
11.4 在线获取令牌信息:令牌内省 166
11.4.1 内省协议 167
11.4.2 构建内省端点 168
11.4.3 发起令牌内省请求 170
11.4.4 将内省与JWT结合 171
11.5 支持令牌撤回的令牌生命周期管理 172
11.5.1 令牌撤回协议 172
11.5.2 实现令牌撤回端点 173
11.5.3 发起令牌撤回请求 174
11.6 OAuth令牌的生命周期 175
11.7 小结 177
第12章 动态客户端注册 178
12.1 服务器如何识别客户端 178
12.2 运行时的客户端注册 179
12.2.1 协议的工作原理 180
12.2.2 为什么要使用动态注册 181
12.2.3 实现注册端点 183
12.2.4 实现客户端自行注册 186
12.3 客户端元数据 188
12.3.1 核心客户端元数据字段名表 188
12.3.2 可读的客户端元数据国际化 190
12.3.3 软件声明 191
12.4 管理动态注册的客户端 192
12.4.1 管理协议的工作原理 193
12.4.2 实现动态客户端注册管理API 195
12.5 小结 202
第13章 将OAuth 2.0用于用户身份认证 203
13.1 为什么OAuth 2.0不是身份认证协议 203
13.2 OAuth到身份认证协议的映射 205
13.3 OAuth 2.0是如何使用身份认证的 207
13.4 使用OAuth 2.0进行身份认证的常见陷阱 208
13.4.1 将访问令牌作为身份认证的证明 208
13.4.2 将对受保护API的访问作为身份认证的证明 209
13.4.3 访问令牌注入 209
13.4.4 缺乏目标受众限制 210
13.4.5 无效用户信息注入 210
13.4.6 不同身份提供者的协议各不相同 210
13.5 OpenID Connect:一个基于OAuth 2.0的认证和身份标准 210
13.5.1 ID令牌 211
13.5.2 UserInfo端点 212
13.5.3 动态服务器发现与客户端注册 214
13.5.4 与OAuth 2.0的兼容性 216
13.5.5 高级功能 216
13.6 构建一个简单的OpenID Connect系统 217
13.6.1 生成ID令牌 217
13.6.2 创建UserInfo端点 219
13.6.3 解析ID令牌 221
13.6.4 获取UserInfo 222
13.7 小结 224
第14章 使用OAuth 2.0的协议和配置规范 225
14.1 UMA 225
14.1.1 UMA的重要性 226
14.1.2 UMA协议的工作原理 227
14.2 HEART 237
14.2.1 HEART的重要性 237
14.2.2 HEART规范 238
14.2.3 HEART机制维度的配置规范 238
14.2.4 HEART语义维度的配置规范 239
14.3 iGov 239
14.3.1 iGov的重要性 240
14.3.2 iGov展望 240
14.4 小结 240
第15章 bearer令牌以外的选择 241
15.1 为什么不能满足于bearer令牌 241
15.2 PoP令牌 242
15.2.1 PoP令牌的请求与颁发 245
15.2.2 在受保护资源上使用PoP令牌 246
15.2.3 验证PoP令牌请求 246
15.3 PoP令牌实现 247
15.3.1 颁发令牌和密钥 247
15.3.2 生成签名头部并发送给受保护资源 249
15.3.3 解析头部、内省令牌并验证签名 250
15.4 TLS令牌绑定 252
15.5 小结 254
第16章 归纳总结 255
16.1 正确的工具 255
16.2 做出关键决策 256
16.3 更大范围的生态系统 257
16.4 社区 257
16.5 未来 258
16.6 小结 259
附录A 代码框架介绍 260
附录B 补充代码清单 265
· · · · · ·
第1章 OAuth 2.0是什么,为什么要关心它 2
1.1 OAuth 2.0是什么 2
1.2 黑暗的旧时代:凭据共享与凭据盗用 5
1.3 授权访问 9
1.3.1 超越HTTP基本认证协议和密码共享反模式 10
1.3.2 授权委托:重要性及应用 11
1.3.3 用户主导的安全与用户的选择 12
1.4 OAuth 2.0:优点、缺点和丑陋的方面 13
1.5 OAuth 2.0不能做什么 15
1.6 小结 16
第2章 OAuth之舞 17
2.1 OAuth 2.0协议概览:获取和使用令牌 17
2.2 OAuth 2.0授权许可的完整过程 17
2.3 OAuth中的角色:客户端、授权服务器、资源拥有者、受保护资源 25
2.4 OAuth的组件:令牌、权限范围和授权许可 27
2.4.1 访问令牌 27
2.4.2 权限范围 27
2.4.3 刷新令牌 27
2.4.4 授权许可 28
2.5 OAuth的角色与组件间的交互:后端信道、前端信道和端点 29
2.5.1 后端信道通信 29
2.5.2 前端信道通信 30
2.6 小结 32
第二部分 构建OAuth环境
第3章 构建简单的OAuth客户端 34
3.1 向授权服务器注册OAuth客户端 34
3.2 使用授权码许可类型获取令牌 36
3.2.1 发送授权请求 37
3.2.2 处理授权响应 39
3.2.3 使用state参数添加跨站保护 40
3.3 使用令牌访问受保护资源 41
3.4 刷新访问令牌 43
3.5 小结 47
第4章 构建简单的OAuth受保护资源 48
4.1 解析HTTP请求中的OAuth令牌 49
4.2 根据数据存储验证令牌 50
4.3 根据令牌提供内容 53
4.3.1 不同的权限范围对应不同的操作 54
4.3.2 不同的权限范围对应不同的数据结果 56
4.3.3 不同的用户对应不同的数据结果 58
4.3.4 额外的访问控制 61
4.4 小结 61
第5章 构建简单的OAuth授权服务器 62
5.1 管理OAuth客户端注册 62
5.2 对客户端授权 64
5.2.1 授权端点 64
5.2.2 客户端授权 66
5.3 令牌颁发 68
5.3.1 对客户端进行身份认证 69
5.3.2 处理授权许可请求 70
5.4 支持刷新令牌 72
5.5 增加授权范围的支持 74
5.6 小结 77
第6章 现实世界中的OAuth 2.0 78
6.1 授权许可类型 78
6.1.1 隐式许可类型 79
6.1.2 客户端凭据许可类型 81
6.1.3 资源拥有者凭据许可类型 85
6.1.4 断言许可类型 89
6.1.5 选择合适的许可类型 91
6.2 客户端部署 92
6.2.1 Web应用 93
6.2.2 浏览器应用 93
6.2.3 原生应用 94
6.2.4 处理密钥 99
6.3 小结 100
第三部分 OAuth 2.0 的实现与漏洞
第7章 常见的客户端漏洞 102
7.1 常规客户端安全 102
7.2 针对客户端的CSRF攻击 103
7.3 客户端凭据失窃 105
7.4 客户端重定向URI注册 107
7.4.1 通过Referrer盗取授权码 108
7.4.2 通过开放重定向器盗取令牌 111
7.5 授权码失窃 113
7.6 令牌失窃 114
7.7 原生应用最佳实践 115
7.8 小结 116
第8章 常见的受保护资源漏洞 117
8.1 受保护资源会受到什么攻击 117
8.2 受保护资源端点设计 118
8.2.1 如何保护资源端点 118
8.2.2 支持隐式许可 126
8.3 令牌重放 128
8.4 小结 130
第9章 常见的授权服务器漏洞 131
9.1 常规安全 131
9.2 会话劫持 131
9.3 重定向URI篡改 134
9.4 客户端假冒 138
9.5 开放重定向器 140
9.6 小结 142
第10章 常见的OAuth令牌漏洞 143
10.1 什么是bearer令牌 143
10.2 使用bearer令牌的风险及注意事项 144
10.3 如何保护bearer令牌 145
10.3.1 在客户端上 145
10.3.2 在授权服务器上 146
10.3.3 在受保护资源上 146
10.4 授权码 147
10.5 小结 152
第四部分 更进一步
第11章 OAuth令牌 154
11.1 OAuth令牌是什么 154
11.2 结构化令牌:JWT 155
11.2.1 JWT的结构 156
11.2.2 JWT声明 157
11.2.3 在服务器上实现JWT 158
11.3 令牌的加密保护:JOSE 160
11.3.1 使用HS256的对称签名 161
11.3.2 使用RS256的非对称签名 162
11.3.3 其他令牌保护方法 165
11.4 在线获取令牌信息:令牌内省 166
11.4.1 内省协议 167
11.4.2 构建内省端点 168
11.4.3 发起令牌内省请求 170
11.4.4 将内省与JWT结合 171
11.5 支持令牌撤回的令牌生命周期管理 172
11.5.1 令牌撤回协议 172
11.5.2 实现令牌撤回端点 173
11.5.3 发起令牌撤回请求 174
11.6 OAuth令牌的生命周期 175
11.7 小结 177
第12章 动态客户端注册 178
12.1 服务器如何识别客户端 178
12.2 运行时的客户端注册 179
12.2.1 协议的工作原理 180
12.2.2 为什么要使用动态注册 181
12.2.3 实现注册端点 183
12.2.4 实现客户端自行注册 186
12.3 客户端元数据 188
12.3.1 核心客户端元数据字段名表 188
12.3.2 可读的客户端元数据国际化 190
12.3.3 软件声明 191
12.4 管理动态注册的客户端 192
12.4.1 管理协议的工作原理 193
12.4.2 实现动态客户端注册管理API 195
12.5 小结 202
第13章 将OAuth 2.0用于用户身份认证 203
13.1 为什么OAuth 2.0不是身份认证协议 203
13.2 OAuth到身份认证协议的映射 205
13.3 OAuth 2.0是如何使用身份认证的 207
13.4 使用OAuth 2.0进行身份认证的常见陷阱 208
13.4.1 将访问令牌作为身份认证的证明 208
13.4.2 将对受保护API的访问作为身份认证的证明 209
13.4.3 访问令牌注入 209
13.4.4 缺乏目标受众限制 210
13.4.5 无效用户信息注入 210
13.4.6 不同身份提供者的协议各不相同 210
13.5 OpenID Connect:一个基于OAuth 2.0的认证和身份标准 210
13.5.1 ID令牌 211
13.5.2 UserInfo端点 212
13.5.3 动态服务器发现与客户端注册 214
13.5.4 与OAuth 2.0的兼容性 216
13.5.5 高级功能 216
13.6 构建一个简单的OpenID Connect系统 217
13.6.1 生成ID令牌 217
13.6.2 创建UserInfo端点 219
13.6.3 解析ID令牌 221
13.6.4 获取UserInfo 222
13.7 小结 224
第14章 使用OAuth 2.0的协议和配置规范 225
14.1 UMA 225
14.1.1 UMA的重要性 226
14.1.2 UMA协议的工作原理 227
14.2 HEART 237
14.2.1 HEART的重要性 237
14.2.2 HEART规范 238
14.2.3 HEART机制维度的配置规范 238
14.2.4 HEART语义维度的配置规范 239
14.3 iGov 239
14.3.1 iGov的重要性 240
14.3.2 iGov展望 240
14.4 小结 240
第15章 bearer令牌以外的选择 241
15.1 为什么不能满足于bearer令牌 241
15.2 PoP令牌 242
15.2.1 PoP令牌的请求与颁发 245
15.2.2 在受保护资源上使用PoP令牌 246
15.2.3 验证PoP令牌请求 246
15.3 PoP令牌实现 247
15.3.1 颁发令牌和密钥 247
15.3.2 生成签名头部并发送给受保护资源 249
15.3.3 解析头部、内省令牌并验证签名 250
15.4 TLS令牌绑定 252
15.5 小结 254
第16章 归纳总结 255
16.1 正确的工具 255
16.2 做出关键决策 256
16.3 更大范围的生态系统 257
16.4 社区 257
16.5 未来 258
16.6 小结 259
附录A 代码框架介绍 260
附录B 补充代码清单 265
· · · · · ·