第1章 Web 服务 1
1.1 Web 服务概述 1
1.1.1 驻留和可订阅 1
1.1.2 Web 编程的革命 2
1.1.3 相关的 Web 服务标准 3
1.2 需要 Web 服务的原因 4
1.2.1 Internet 商务的可靠性和完整性 4
1.2.2 事务和事务性组件的优点 4
1.2.3 发挥推动作用的委员会 8
1.3 Web 服务的业务推动因素 10
1.3.1 数据的可靠性 10
1.3.2 客户访问 10
1.3.3 本地商务与国际商务 11
1.3.4 流线型事务的完成 11
1.3.5 特定于业务的推动因素 11
1.3.6 Web 服务请求者 12
1.3.7 业务的内部推动因素 13
1.4 Web 服务的开发、支持和未来 14
1.4.1 Web 服务标准 14
1.4.2 Web 服务的业务领域 14
1.5 业界领袖的参与 14
1.5.1 IBM 15
1.5.2 SUN 15
1.5.3 BEA 15
1.5.4 Microsoft 15
1.6 Web 服务的未来 15
1.6.1 成本/收益分析 15
1.6.2 全球 Internet 商务 16
1.7 小结 16
第2章 安全 17
2.1 安全简介 17
2.1.1 安全性的主要内容 17
2.1.2 需要安全的原因 19
2.1.3 实现安全性的注意事项 20
2.1.4 安全因素 21
2.2 Web 服务安全的含义 23
2.2.1 Web 安全问题 23
2.2.2 特别针对 Web 服务的安全性开发 24
2.2.3 Web 服务安全性应用 25
2.3 安全术语和概念 26
2.3.1 DMZ——非军事区 26
2.3.2 传输层安全 27
2.3.3 身份验证层安全 29
2.3.4 应用层安全 32
2.3.5 安全标准示例 37
2.3.6 传输层安全示例 37
2.3.7 身份验证层安全示例 38
2.3.8 应用层安全示例 40
2.3.9 身份验证集成示例 41
2.4 小结 45
第3章 身份验证机制 46
3.1 身份验证机制概述 46
3.1.1 所需功能列表 47
3.1.2 方案简介 48
3.2 基本身份验证 51
3.3 基于 SSL 的基本身份验证 53
3.3.1 内部用户的体系结构 55
3.3.2 外部用户的体系结构 55
3.3.3 机制的优缺点 55
3.4 摘要身份验证机制 56
3.4.1 内部用户的体系结构 57
3.4.2 外部用户的体系结构 57
3.4.3 机制的优缺点 57
3.5 NTLM 身份验证机制 58
3.5.1 内部用户的体系结构 59
3.5.2 NTLM 机制的优缺点 59
3.6 客户证书机制 59
3.6.1 内部用户的体系结构 60
3.6.2 外部用户的体系结构 61
3.7 情景示例 62
3.7.1 环境描述 63
3.7.2 体系结构 63
3.7.3 用户请求流程图 64
3.7.4 最后的分析和决策 65
3.8 Liberty 项目 67
3.8.1 Web 服务的安全 67
3.8.2 网络标识的含义 68
3.9 Liberty Alliance 的含义 68
3.9.1 Liberty 规范所提供的服务 69
3.9.2 规范 70
3.9.3 体系结构 71
3.9.4 身份验证上下文机制 76
3.9.5 Liberty 工具包 78
3.9.6 构建 Liberty 应用程序 79
3.9.7 未来的方向 84
3.10 小结 84
第4章 PKI 86
4.1 PKI 的含义 86
4.1.1 密码术 87
4.1.2 标识 95
4.1.3 快速回顾 101
4.2 Web 服务和 PKI 101
4.2.1 客户证书 101
4.2.2 集成 PKI 的应用程序 101
4.2.3 内部和委托 PKI 102
4.2.4 可替换的安全选项 102
4.3 部署 PKI 105
4.3.1 完全服务于内部的 PKI 105
4.3.2 委托 PKI 106
4.3.3 技术角度 107
4.3.4 企业角度 109
4.4 PKI 和 Web 服务:全面介绍 110
4.5 小结 113
第5章 SSL 114
5.1 SSL 概述 114
5.1.1 起源 115
5.1.2 SSL 提供的内容 116
5.1.3 SSL 没有提供的内容 116
5.2 需要 SSL 的原因 119
5.2.1 HTTP 119
5.2.2 SSL 解决方案 121
5.3 SSL 的工作方式 121
5.3.1 概述 121
5.3.2 保持数据的安全性和完整性 125
5.4 操作概述 128
5.5 SSL——局限性、警告和后继发展 144
5.5.1 安全 144
5.5.2 警告 145
5.5.3 后继发展 145
5.6 Web 服务如何使用 SSL 146
5.6.1 SSL 在体系结构上属于外部特性 146
5.6.2 安全和完整性的成本 147
5.7 小结 148
第6章 XML 签名 149
6.1 使用 XML 签名的原因 149
6.1.1 多个签名 152
6.1.2 持久性签名 153
6.2 Web 服务和签名 153
6.2.1 XML 153
6.2.2 远程引用 153
6.2.3 多方参与 154
6.3 XML 签名概述 154
6.3.1 基本的 XML 签名结构 155
6.3.2 示例:分离签名 156
6.3.3 示例:封装签名 158
6.3.4 示例:被封装的签名 160
6.3.5 示例:分离签名和外部引用 161
6.4 XML 签名的处理步骤 161
6.4.1 生成 XML 签名 161
6.4.2 XML 签名验证 163
6.5 XML 处理的限制 164
6.5.1 基本 XML 处理 165
6.5.2 DOM 和 SAX 处理 166
6.5.3 XML 命名空间处理 166
6.5.4 字符编码 166
6.6 XML 签名的语法 166
6.6.1 核心语法 167
6.6.2 可选的签名语法 175
6.6.3 处理指令和注释 177
6.7 算法 177
6.8 安全性注意事项 181
6.8.1 转换操作的注意事项 181
6.8.2 安全模型注意事项 182
6.8.3 其他注意事项 182
6.9 实现方案 183
6.9.1 XML 签名 Web 服务 183
6.9.2 XML 签名工具包 183
6.10 局限性 186
6.11 小结 187
第7章 XML 加密 188
7.1 需要 XML 加密的原因 188
7.1.1 对文档的部分内容加密 188
7.1.2 多重加密 189
7.1.3 持续性存储 190
7.1.4 Web 服务和 XML 加密 191
7.2 XML 加密概述 191
7.3 XML 加密示例 193
7.3.1 加密整个 XML 元素 193
7.3.2 加密 XML 元素的内容 195
7.3.3 加密 XML 字符 196
7.3.4 加密 XML 文档 196
7.3.5 加密任意内容 197
7.3.6 加密 EncryptedData 元素 200
7.3.7 添加密钥信息 201
7.3.8 对密钥进行加密 202
7.4 XML 加密语法 203
7.4.1 EncryptedData 元素 203
7.4.2 EncryptedKey 元素 204
7.4.3 CipherReference 元素 205
7.4.4 EncryptionProperties 元素 206
7.5 携带密钥信息 207
7.5.1 使用 ds:KeyInfo 携带密钥信息 207
7.5.2 使用 EncryptedKey 携带密钥信息 209
7.5.3 方法的选择 210
7.6 XML 文档的加密指导原则 210
7.6.1 XML 片断串行化的指导原则 210
7.6.2 任意数据的加密指导原则 211
7.7 算法 212
7.7.1 块式加密 212
7.7.2 密钥传输 212
7.7.3 密钥协议 213
7.7.4 对称密钥包装 213
7.7.5 消息摘要 213
7.7.6 消息验证 214
7.7.7 规范化 214
7.7.8 编码 215
7.8 与 XML 签名的关系 215
7.9 安全性注意事项 220
7.9.1 明文推测攻击 220
7.9.2 签署所见内容 221
7.9.3 对称密钥 221
7.9.4 初始化向量 221
7.9.5 拒绝服务 221
7.10 局限性 221
7.11 发展趋势 222
7.12 实现方案 222
7.13 小结 223
第8章 XKMS 224
8.1 密钥管理问题 224
8.2 XKMS 概述 228
8.2.1 XKMS 服务 228
8.2.2 使用 XKMS 服务的示例 229
8.2.3 XKMS 的优点 230
8.2.4 XKMS 的命名空间 230
8.2.5 XKISS 和 XKRSS 231
8.3 XML 密钥信息规范 231
8.3.1 XKISS 服务 231
8.3.2 定位服务 232
8.3.3 验证服务 234
8.3.4 确保 XKISS 服务响应的有效性 237
8.3.5 XKISS 消息规范 237
8.4 XML 密钥注册规范 241
8.4.1 密钥注册 242
8.4.2 重发密钥 245
8.4.3 取消密钥 245
8.4.4 密钥恢复 246
8.4.5 请求验证 247
8.4.6 XKRSS 消息规范 247
8.5 SOAP 绑定 249
8.6 批量操作 250
8.6.1 批量注册的用途 250
8.6.2 X-BULK 规范 250
8.7 安全注意事项 253
8.7.1 重发攻击 254
8.7.2 拒绝服务 254
8.7.3 恢复策略 254
8.7.4 受限使用的共享数据 254
8.8 XKMS 的未来 254
8.9 实现 255
8.9.1 客户端的技术和选项 255
8.9.2 服务器端的选项 256
8.9.3 XKMS 实现工具 257
8.10 小结 262
第9章 SAML 263
9.1 SAML 简介 263
9.1.1 SAML 的背景 263
9.1.2 使用 SAML 的根本原因 264
9.1.3 SAML 规范 264
9.1.4 SAML 的优势 267
9.2 SAML 规范文档 267
9.2.1 使用案例 268
9.2.2 会话管理 274
9.2.3 核心规范 277
9.3 有关 SAML 的关键标准和规范 292
9.4 产品和工具包 293
9.5 Liberty Alliance、Microsoft Passport 和 SAML 303
9.5.1 Liberty Alliance 概述 304
9.5.2 Liberty Alliance 的目标 305
9.5.3 功能需求 305
9.5.4 Liberty Alliance 规范文档 306
9.6 SAML 的前景 307
9.7 小结 308
第10章 XACML 309
10.1 XACML 的背景 309
10.2 XACML 的需求 309
10.3 访问控制列表 310
10.3.1 AclEntry 接口 311
10.3.2 ACL 接口 311
10.3.3 Group 接口 312
10.4 SAML 和角色数据库 312
10.5 XACML 规范文档 315
10.5.1 应用程序案例 316
10.5.2 委员会工作草案 322
10.5.3 XACML 访问控制 XML 示例 332
10.6 XACML 的前景 340
10.7 小结 341
第11章 WS-Security 342
11.1 WS-Security 简介 342
11.2 Web 服务的安全保护伞 343
11.2.1 设计准则 343
11.2.2 安全性的各个方面 347
11.2.3 消息完整性 351
11.2.4 利用<Timestamp>元素避免重发攻击 356
11.2.5 安全性令牌传送 357
11.2.6 消息机密性 359
11.3 WS-Security 的优点 366
11.4 缺陷 367
11.5 小结 367
第12章 P3P 368
12.1 了解隐私 368
12.1.1 隐私问题 369
12.1.2 Web 站点的监控技术 370
12.1.3 保护隐私的解决方案 372
12.2 P3P 的历史 374
12.3 了解 P3P 374
12.3.1 P3P 的工作原理 375
12.3.2 了解规范 376
12.4 P3P 工具 383
12.4.1 Internet Explorer 6.0 384
12.4.2 AT&T Privacy Bird 386
12.4.3 IBM P3P 策略编辑器和解析器 387
12.5 在站点中实现 P3P 388
12.5.1 概述 389
12.5.2 规划和部署 390
12.5.3 部署 392
12.6 P3P 和 Web 服务 395
12.7 P3P 部署中的难点 396
12.7.1 缺乏保护用户隐私的兴趣 396
12.7.2 缺乏执行机制 397
12.7.3 EU 的建议 397
12.7.4 维护和实现开销过高 397
12.8 P3P 的前景 397
12.9 小结 398
第13章 J2EE Web 服务:案例分析 399
13.1 案例分析概述 399
13.2 0.1版本 401
13.2.1 应用程序概述 401
13.2.2 Java 代码 405
13.2.3 运行应用程序 422
13.3 0.2版本 423
13.3.1 XML 签名 423
13.3.2 运行应用程序 436
13.4 0.3版本 437
13.4.1 XML 加密 437
13.4.2 运行应用程序 445
13.5 小结 447
第14章 .NET Web 服务:案例分析 448
14.1 Web 服务体系结构 448
14.1.1 Web 服务架构的体系结构 448
14.1.2 Web 服务安全性体系结构 449
14.2 案例分析:WROX 银行 450
14.2.1 身份验证和凭证 450
14.2.2 消息机密性 450
14.2.3 消息完整性 451
14.3 OpenService Web 服务 451
14.3.1 Web 浏览器中的 Web 服务 451
14.3.2 用于 Web 服务的 SOAP 消息 456
14.3.3 创建客户应用程序 458
14.3.4 Web 服务的缺陷 466
14.4 在 IIS 中创建并配置启用 Basic HTTP Authentication 的 Web 服务 467
14.4.1 IIS 身份验证 467
14.4.2 创建 Basic HTTP Authentication 服务 468
14.4.3 创建启用 Basic HTTP Authentication 功能的客户程序 469
14.4.4 Basic HTTP Authentication 的缺点 472
14.5 创建并配置可启用 SOAP 头信息的 Web 服务 473
14.6 密码术和 Web 服务 478
14.6.1 .NET 中的加密算法 478
14.6.2 在消息加密中使用密码术 480
14.6.3 创建 SOAP 加密 Web 服务 480
14.6.4 创建 SOAP 加密客户程序代码 488
14.6.5 注意事项以及预防措施 491
14.7 对 SOAP 消息进行数字签名 492
14.8 WSDK 服务 493
14.8.1 服务器上的证书存储配置 493
14.8.2 设置 Web 服务 494
14.8.3 设置 WSDK 客户程序 497
14.9 小结 502
附录 A 工具包 503
A.1 资源 503
A.2 标准图表 504
附录 B Tomcat/Axis 的安装 506
B.1 Tomcat 的 Windows 安装程序 506
B.1.1 NT 服务 507
B.1.2 JSP Development Shell Extensions 507
B.1.3 Start Menu Group 507
B.1.4 Tomcat Documentation 507
B.1.5 Example Web Applications 507
B.1.6 Source Code 508
B.1.7 设置环境变量 508
B.1.8 特定于 Windows 9x 和 Windows ME 操作系统的问题 508
B.1.9 使用 ZIP 文件在 Windows 中安装 Tomcat 509
B.2 在 Linux 中安装 Tomcat 510
B.3 安装 Axis 512
附录 C Tomcat SSL 配置 514
C.1 生成密钥存储和证书 514
C.2 Tomcat 配置 514