第1章Java技术与安全概述
1.1 为什么企业应用要采用Java技术
1.1.1 Java2平台标准版(Java 2 Platform Standard Edition, J2SE)
1.1.2 Java2平台企业版(Java 2 Platform Enterprise Edition,J2EE)
1.1.3 Java组件
1.1.4 完整的、发展的和可互操作的Java安全技术
1.1.5 异类环境中的可移植性
1.2 企业级Java技术
1.2.1 中间层:Servlets、JSP和EJB
1.2.2 组件软件:向正确方向迈出的第一步
1.2.3 企业内部的安全通信
1.3 作为安全一部分的Java技术
1.4 企业安全集成的概述
1.4.1 身份认证与授权服务
1.4.2 密码服务
1.4.3 防火墙
1.5 上市的时间
1.5.1 对基本技术标准的支持
1.5.2 不同环境中的工程软件
1.5.3 时间是关键
第2章 企业网络安全与Java技术
2.1 网络体系结构
2.1.1 两层体系结构
2.1.2 三层体系结构
2.2 网络安全
2.3 服务器端的Java技术
2.3.1 WAS组件
2.3.2 WAS安全环境
2.4 Java与防火墙
2.4.1 TCP/IP报文
2.4.2 通过防火墙的程序间通信
2.4.3 防火墙对Java程序的影响
2.5 小结
第II部分 Enterprise Java组件安全
第3章 Enterprise Java安全基础
3.1 企业系统
3.2 J2EE应用
3.2.1 EJB模块
3.2.2 Web模块
3.2.3 应用客户端模块
3.3 ORB间的安全互操作
3.4 连接器
3.5 Java消息传送服务(JMS)
3.6 一个简单的电子商务请求流程
3.7 J2EE平台角色
3.7.1 应用组件提供者
3.7.2 应用级装者
3.7.3 部署者
3.7.4 系统管理员
3.7.5 J2EE产品提供者
3.8 J2EE安全角色
3.9 声明性安全策略
3.9.1 登录配置策略
3.9.2 认证策略
3.9.3 委托策略
3.9.4 连接策略
3.10 程序性安全
3.10.1获取身份信息
3.10.2 预应授权
3.10.3 对EIS的应用管理式登录
3.11 WAS环境内部的安全通信
3.12 安全电子商务请求流程
第4章 Servlet和JSP安全
4.1 介绍
4.1.1 Java Servlet
4.1.2 JSP技术
4.2 Servlet的优点
4.3 Servlet生命周期
4.4 Web模块的部署描述符
4.5 认证
4.5.1 登录配置策略
4.5.2 一次登录,资源尽享
4.6 授权
4.6.1 调用链
4.6.2 保护指定的URL
4.6.3 保护URL模式
4.6.4 完全保护
4.6.5 理解优先级规则
4.6.6 数据约速——只能通过SSL传送
4.7 主体委托
4.8 程序性安全
4.8.1 主体信息
4.8.2 授权信息
4.8.3 SSL属性信息:证书和密码组
4.8.4 程序性的登录
4.9 Web组件的运行时约束
4.10 使用方式
4.10.1 使用HTTPS连接到外部HTTP服务器
4.10.2 安全地维持状态
4.10.3 pre-servlet与post-servlet处理
4.11 分割Web应用
第5章 EJB安全
5.1 引言
5.2 EJB角色和安全
5.2.1 EJB提供者
5.2.2 应用组装者
5.2.3 部署者
5.2.4 系统管理员
5.2.5 EJB容器提供者
5.3 认证
5.4 授权
5.5 委托
5.6 安全考虑事项
第6章 Enterprise Java Security部署实例
6.1 规划组件安全系统
6.1.1 客户端访问
6.1.2 表示层
6.1.3 业务逻辑
6.1.4 资源适配器和遗留应用
6.2 部署拓扑结构
6.2.1 入门级
6.2.2 集群环境
6.2.3 加另一个防御等级
6.2.4 使用安全缓存反向代理服务器进行防御
6.3 安全通信信道
6.3.1 HTTP连接
6.3.2 HOP连接
6.3.3 JMS连接
6.3.4 连接到非J2EE系统
6.3.5 关于其他主题
6.4 安全性考虑
第III部分 Java 2安全基础
第7章 J2SE安全基本原理
7.1 访问类、接口、域和方法
7.2 类加载器
7.2.1 类加载机制的安全责任
7.2.2 被加载类的可靠性级别
7.2.3 类加载过程
7.2.4 构建定制的ClassLoader
7.3 类文件验证器
7.3.1 类文件验证器的责任
7.3.2 类文件验证器的四个关口
7.3.3 字节码验证器的详细细节
7.3.4 类文件验证器的一个例子
7.4 安全管理器
7.4.1 安全管理器的职责
7.4.2 安全管理器的操作
7.4.3 攻击类型
7.4.4 恶习意代码
7.4.5 安全管理器扩展
7.5 三个Java安全支柱之间的互相依赖
7.6 小结
第8章 Java 2许可模型
8.1 Java2 访问控制模型总览
8.1.1 特权修改的词法范围
8.1.2 Java2安全工具
8.1.3 JAAS
8.2 Java许可
8.2.1 许可目标和操作
8.2.2 PermissionCollection类和Permission类
8.2.3 Permission类中的implies()方法
8.2.4 PermissionCollection类和Permission类中的implies()方法
8.2.5 Permission隐式地等同于AllPermission
8.3 Java安全策略
8.3.1 联合多个签名者
8.3.2 多个策略文件,一个激活的策略
8.4 CodeSource的概念
8.5 ProtectionDomain
8.5.1 d PermissionDomain类中的implies()方法
8.5.2 系统域和应用域
8.5.3 Class、ProtectionDomain和Permission之间的关系
8.6 基本的Java 2访问控制模型
8.6.1 场景:当前线程的简单检测
8.6.2 SecurityManager和AccessController
8.7 Java 2特权代码
8.7.1 构造特权代码的安全建议
8.7.2 如何编写特权代码
8.7.3 特权代码场景
8.8 protectionDomain继承
8.9 Java 2 访问控制模型中的性能问题
8.9.1 去除复制ProtectionDomain的操作
8.9.2 在系统域之外过滤
8.9.3 在第一个特权栈帧处停止验证
8.10 小结
第9章 Java认证与授权服务(JAAS)
9.1 JAAS概述和JAAS术语
9.2 认证
9.2.1 通过LoginModule实现可插的认证
9.2.2 JAAS的LoginModule模块的示例
9.3 授权概述
9.3.1 基于J2SE保护域的授权概述
9.3.2 向线程添加Subject
9.3.3 安全授权策略文件
9.3.4 基于Subject的授权算法示例
9.3.5 对JAAS的其他观察
9.4 JAAS与J2EE
9.4.1 在不同JVM中执行的Web应用服务器
9.4.2 J2EE环境中的JAAS
9.4.3 跨越鸿沟
9.4.4 企业级安全策略管理
9.5 可插入认证的其他技术支持
第IV部分 企业级Java与密码学
第10章 密码学理论
10.1 密码学的目标
10.2 秘密密钥密码学
10.2.1 算法与技术
10.2.2 秘密密钥安全属性
10.3 公开密钥密码学
10.3.1 算法与技术
10.3.2 公开密钥安全属性
10.3.3 数字签名
10.3.4 数字证书
10.3.5 秘密密钥分发
第11章 Java2平台与加密技术
11.1 JCA和JCE框架
11.1.1 术语和定义
11.1.2 JCA和JCE工作原理
11.1.3 JCA和JCE提供者
11.1.4 引擎类和SPI类
11.2 JCA API
11.2.1 java.security.SecureRandom类
11.2.2 java.security.Key接口
11.2.3 java.security包的publicKey接口和PrivateKey接口
11.2.4 java.security.KeyFactory类
11.2.5 java.security.KeyPair类
11.2.6 java.security.KeyPairGenerator类
11.2.7 java.security.KeyStore类
11.2.8 java.security.MessageDigest类
11.2.9 java.security.Signature类
11.2.10 java.security包中的AlgorithmParameters和AlgorithmParameterGenerator类
11.2.11 java.security.SignedObject类
11.2.12 java.security.spec包
11.2.13 java.security.cert包
11.2.14 java.security.interfaces包
11.3 JCE API
11.3.1 javax.crypto.Cipher类
11.3.2 javax.crypto包的CipherInputStream类和CipherOutputStream类
11.3.3 javax.crypto.SecreKey接口
11.3.4 javax.crypto.spec.SecretKeySpec类
11.3.5 javax.crypto.KeyGenerator类
11.3.6 javax.crypto.seretKeyFactory类
11.3.7 javax.crypto.SealedObject类
11.3.8 javax.crypto.KeyAgreement类
11.3.9 javax.crypto.Mac类
11.4 实践中的JCE
11.4.1 Bob的程序
11.4.2 Alice的程序
11.5 安全考虑
第12章 J2EE中的PKCS与S/MIME
12.1 PKCE概述
12.1.1 PKCS#1:RSA加密标准
12.1.2 PKCS#5:基于密码的加密标准
12.1.3 PKCS#7:加密消息语法标准
12.1.4 PKCS#8:私有密钥信息语法标准
12.1.5 PKCS#9:选择属性类型
12.1.6 PKCS#10:证书申请语法标准
12.1.7 PKCS#12:个人信息交换语法标准
12.2 S/MIME概述
12.3 PKCS和S/MIME的签名和验证事务
12.3.1 有关PKCS#7标准的思考
12.3.2 使用PKCS和S/MIME
12.4 带PKCS和S/MIME的加密事务
12.5 安全考虑
12.6 展望未来
第13章 J2EE环境下的SSL和TLS协议
13.1 SSL和TLS协议
13.1.1 record协议
13.1.2 handshake(握手)协议
13.2 HTTPS
13.3 通过SSL支持构建J2EE产品
13.3.1 使用SSL保护认证期间的用户ID和密码
13.3.2 基于证书认证的SSL
13.3.3 反向代理服务器和WAS的相互认证
13.3.4 SSL中基于Cookie的单点登录
13.3.5 基于证书认证的单点登录
13.3.6 SSL保护通信信道
13.4 在J2EE程序中使用SSL
13.4.1 JSSE
13.4.2 信任管理员
13.4.3 信任库
13.5 示例
13.5.1 无SSL的基本场景
13.5.2 带SSL的场景
13.6 小结
第V部分 高级专题
第14章 Web服务的企业级安全
14.1 XML
14.2 SOAP
14.3 WSKL
14.4 Web服务的安全:动机
14.5 安全技术
14.5.1 XML与加密技术
14.5.2 WS-Security
14.6 Web服务安全模型的原则
14.6.1 Web服务消息安全
14.6.2 WS-Policy
14.6.3 WS-Trust
14.6.4 WS-SecureConversation
14.6.5 WS-Privacy
14.6.6 WS-Federation
14.6.7 WS-Authorization
14.6.8 示例
14.7 应用模式
14.8 使用场景
14.9 Web服务提供者安全
14.9.1 用户认证
14.9.2 强制授权
14.10 安全考虑
14.11 前景
第15章 对容器提供者的安全考虑
15.1 理解环境
15.2 认证
15.2.1 认证机制
15.2.2 使用JAAS LoginModule
15.2.3 用户信息
15.2.4 单点登录
15.3 授权
15.4 安全通信
15.4.1 使用JSSE
15.4.2 客户证书
15.5 安全相关
15.6 访问系统资源
15.7 在连接器边界匹配身份
第16章 后记
第VI部分 附录
附录A 分布式对象体系结构的安全
A.1 RMI
A.2 存根和框架
A.3 RMI注册
A.4 RMI的安全
附录B X.509数字证书
附录C 中英文对照缩略词表
附录D 参考文献