标题：安全模式--J2EE、Web服务和身份管理最佳实践与策略
基本信息
原书名：Core Security Patterns: Best Practices and Strategies for J2EE, Web Services, and Identity Management
原出版社：Prentice Hall PTR 
作者：（美）Christopher Steel, Ramesh Nagappan, Ray Lai   
译者：陈秋萍 罗邓 袁国忠  
丛书名：Sun公司核心技术丛书
出版社：机械工业出版社 
ISBN：7111195035
出版日期：2006 年8月 
开本：16开 
页码：571 
版次：1-1
内容简介
本书汇集了作者在安全领域的丰富经验，全面阐述java应用安全的基本知识和结构化安全设计方法。本书介绍如何使用模式驱动和最佳实践构建可靠应用和服务。全书分为两大部分，第一部分介绍用于j2ee应用、web服务、身份管理、服务供应和身份识别的安全架构、机制、标准、技术和实现原则，第二部分介绍23种全新的安全模式和101项最佳实践，帮助开发人员构建端到端安全j2ee应用。.
本书可供从事计算机安全技术工作的开发人员、设计人员和管理人员参考。
本书是一本安全从业者实用指南，介绍在j2ee企业应用、web服务、身份管理、服务供应和身份识别解决方案中，如何建立健壮的端到端安全性。本书由三位杰出的java安全架构师编写，其中的模式驱动方法全面反映了确保大型应用安全的最佳实践。..
本书全面阐述java应用安全的基本知识并介绍一种强大的结构化安全设计方法；介绍独立于厂商的安全架构；列出详细的评估核对表以及23种经过实践检验的安全架构模式。书中介绍多种实际场景，阐述架构和实现，并提供详细的示例代码。本书还讨论如何使用加密技术、混淆代码、建立安全通信、确保j2me应用的安全、对用户进行认证和授权以及保护web服务——实现单点登录、有效的身份管理和使用智能卡和生物特征的身份识别。
目录
对本书的赞誉 
译者序 
judy lin序 
joe uniejewski序 
前言 
致谢 
作者简介 
第一部分 引言 
第1章 默认即安全 
1．1 围绕安全的业务挑战 
1．2 哪些环节是最薄弱的 
1．3 应用安全的影响 
1．4 安全四问 
1．5 构建健壮安全的策略 
1．6 主动安全措施和被动安全措施 
1．7 遵守安全法规的重要性 
1．8 身份管理的重要性 
1．9 安全的身份识别 
1．10 java技术的重要性 
1．11 让安全成为“业务助推器” 
1．12 小结 
参考文献 
第2章 安全基本知识 
2．1 安全需求和目标 
2．2 加密技术在安全中的作用 
2．3 安全套接字层的作用 
2．4 ldap在安全中的重要性和作用 
2．5 加密算法的常见挑战 
2．6 威胁建模 
2．7 身份管理 
2．8 小结 
参考文献 
第二部分 java安全架构与技术 
第3章 java 2平台安全 
3．1 java安全架构 
3．2 java applet安全 
3．3 java web start安全 
3．4 java安全管理工具 
3．5 j2me安全架构 
3．6 java card安全架构 
3．7 保护java代码的安全 
3．8 小结 
参考文献 
第4章 java可扩展安全架构与api 
4．1 java可扩展安全架构 
4．2 java加密架构 
4．3 java加密扩展 
4．4 java证书路径api 
4．5 java安全套接字扩展 
4．6 java认证和授权服务 
4．7 java通用安全服务 
4．8 简单认证和安全层 
4．9 小结 
参考文献 
第5章 j2ee安全架构 
5．1 j2ee架构及其逻辑层 
5．2 j2ee安全定义 
5．3 j2ee安全基础设施 
5．4 基于容器的j2ee安全 
5．5 j2ee组件级/层级安全 
5．6 j2ee客户端安全 
5．7 ejb层或业务组件安全 
5．8 eis集成层概述 
5．9 j2ee架构——网络拓扑 
5．10 j2ee web服务安全概述 
5．11 小结 
参考文献 
第三部分 web服务安全与身份管理 
第6章 web服务安全标准与技术 
6．1 web服务架构及其构件 
6．2 web服务安全的核心问题 
6．3 web服务安全的需求 
6．4 web服务安全标准 
6．5 xml签名 
6．6 xml加密 
6．7 xml密钥管理系统 
6．8 oasis web服务安全 
6．9 ws-i基本安全概要 
6．10 基于java的web服务安全提供者 
6．11 支持xml的安全设备 
6．12 小结 
参考文献 
第7章 身份管理标准与技术 
7．1 身份管理核心问题 
7．2 理解网络身份和联合身份 
7．3 saml简介 
7．4 saml架构 
7．5 saml应用场景 
7．6 saml在基于j2ee的应用和web服务中的作用 
7．7 liberty alliance简介及其目标 
7．8 liberty alliance架构 
7．9 liberty应用场景.. 
7．10 访问控制和策略管理规范简介 
7．11 xacml简介 
7．12 xacml流程与架构 
7．13 xacml应用场景 
7．14 小结 
参考文献 
第四部分 安全设计方法、模式和可行性检查 
第8章 安全设计点金术：方法、模式和可行性检查 
8．1 基本原理 
8．2 安全统一过程 
8．3 安全模式 
8．4 用于j2ee、web服务、身份管理和服务供应的安全模式 
8．5 可行性检查 
8．6 安全测试 
8．7 采用安全框架 
8．8 重构安全设计 
8．9 服务的持续性和恢复 
8．10 小结 
参考文献 
第五部分 设计策略与最佳实践 
第9章 确保web层安全：设计策略与最佳实践 
9．1 web层安全模式 
9．2 最佳实践与陷阱 
参考文献 
第10章 确保业务层安全：设计策略与最佳实践 
10．1 业务层的安全考虑因素 
10．2 业务层安全模式 
10．3 最佳实践与陷阱 
参考文献 
第11章 确保web服务安全：设计策略与最佳实践 
11．1 web服务安全协议栈 
11．2 web服务安全基础设施 
11．3 web服务安全模式 
11．4 最佳实践与陷阱 
参考文献 
第12章 确保身份安全：设计策略与最佳实践 
12．1 身份管理安全模式 
12．2 最佳实践与陷阱 
参考文献 
第13章 安全服务供应：设计策略与最佳实践 
13．1 业务挑战 
13．2 用户账号供应架构 
13．3 spml简介 
13．4 服务供应安全模式 
13．5 最佳实践与陷阱 
13．6 小结 
参考文献 
第六部分 综合应用 
第14章 构建端到端安全架构：案例研究 
14．1 概述 
14．2 用例场景 
14．3 应用架构 
14．4 安全架构 
14．5 设计 
14．6 开发 
14．7 测试 
14，8 部署 
14．9 小结 
14．10 经验教训 
14．11 陷阱 
14．12 结论 
参考文献 
第七部分 使用智能卡和生物特征的身份识别 
第15章 使用智能卡和生物特征的安全身份识别策略 
15．1 物理和逻辑访问控制 
15．2 支持技术 
15．3 基于智能卡的身份识别和认证 
15．4 生物特征身份识别和认证 
15．5 使用智能卡和生物特征的多重认证 
15．6 最佳实践与陷阱 
参考文献
译者序
在信息行业，安全从来没有像今天这样重要。为确保组织的信息安全，组织必须深刻理解与安全相关的业务挑战、潜在威胁以及能够降低风险的最佳实践；更重要的是，组织必须采取可靠的主动安全方法，并在信息处理、传输和存储各个层面实施它们。安全不再是出现问题或遭受攻击后的亡羊补牢，而必须未雨绸缪。安全已日渐成为应用开发过程中不可分割的一部分。. 
本书旨在为安全从业者提供实用指南。它包含大量使用模式驱动和最佳实践构建可靠的IT应用和服务的经验之谈。本书介绍一种安全设计方法，该方法使用一组经过实践检验的可重用模式、最佳实践、可行性检查、防范策略和评估核对表，以确保J2EE应用、Web服务、身份管理、服务供应和身份识别的安全。本书首先讨论用于J2EE应用、Web服务、身份管理、服务供应和身份识别的安全架构、机制、标准、技术和实现原则；然后介绍23种全新的安全模式和101项最佳实践。.. 
本书第1～7章由罗邓组织翻译，参加翻译的人员包括乔红宇、由宗铭、付静波、王晖、郭亮、林爱生等；第8～15章由陈秋萍组织翻译，参加翻译的人员包括黄挺、王进征、邓郑祥、李佩乾、宫晋博、刘丽风、侯学民、蒋蓉芳等；最后，由袁国忠、张海燕负责全书的统稿和译审工作。 
衷心感谢机械工业出版社华章分社编辑所做的大量工作。没有他们的辛勤劳动，本书不可能如此顺利、快捷地出版。 
前言
现有的思考水平无法解决它所提出的问题。 
——阿尔伯特·爱因斯坦 
在信息行业，安全从未像今天这样重要，这促使所有企业和组织都采取主动或被动的措施，在整个信息生命周期内保护数据、流程、通信和资源。在不断发展的信息行业，每天都有新的业务系统面世，对现有系统进行修改随处可见。这些修改旨在提高组织效率和成本效率，以及消费者的满意度。这些改进常常带来新的安全风险，企业必须采取合适的安全策略和规程来应对安全风险。为确保组织的信息安全，必须深入了解与安全相关的业务挑战和潜在威胁，广泛认识为采取保护和应对措施降低风险的最佳实践。更重要的是，组织必须采取可靠的主动安全方法，并在各个层面(信息处理、信息传输和信息存储)实施它们。. 
本书内容 
本书旨在为安全从业者提供实用指南，提供大量使用模式驱动和基于最佳实践的方法来构建可靠的汀应用和服务的经验之谈。本书重点介绍一种安全设计方法，它使用一组经过实践检验的可重用模式、最佳实践、可行性检查、防范策略和评估核对表，确保J2EE应用、Web服务、身份管理、服务供应和身份识别的安全。本书介绍了23种全新的安全模式和101项最佳实践，讨论了用例场景、架构模型、设计策略、实用技术和验证过程。最佳实践和可行性检查从实际部署和最终用户体验的角度出发，阐述了哪些方法奏效和哪些方法不可取。本书还讨论了为J2EE应用、Web服务、身份管理、服务供应和身份识别提供安全的架构、机制、标准、技术和实现原则，并全面阐述子所需的基本知识。 
本书首先概述当今的业务挑战(包括安全威胁和攻击)，分析信息安全和遵守安全法规的重要性，讨论基本安全的概念和技术。本书深入探讨下述主题： 
·J2SE、J2EE、J2ME和JavaCard平台中的安全机制 
·Web服务安全标准和技术 
·身份管理标准和技术 
·安全设计方法、模式、最佳实践和可行性检查 
·用于J2EE应用的安全模式和设计策略 
·用于Web服务的安全模式和设计策略 
·用于身份管理的安全模式和设计策略 
·用于服务供应的安全模式和设计策略 
·用实例介绍构建端到端安全架构 
·使用智能卡和生物特征技术的安全身份识别策略 
本书针对的是Java平台，并突出Java平台在开发和部署安全的应用和服务中的重要性。 
本书不介绍的内容 
虽然本书依赖于大量的Java技术，但并没有介绍用于开发J2EE应用(如JSP、Servlet和EJB)的Java API。如果读者要学习各种API技术，强烈推荐参考Java官方网站中的J2EE计划、教程及推荐的图书。 
本书使用UML图描述模式和实现策略。如果读者要学习UML基本知识，请参阅Grady Booch、James Rumbaugh和Ivar Jacobson编写的《UML用户手册》。 
.　　本书面向的读者 
本书可供负责确保信息系统和业务应用安全的架构师、Java开发人员和技术项目经理使用。对于想了解与Java应用、Web服务、身份管理、服务供应和使用智能卡和生物特征进行身份识别相关的安全概念和技术的读者，本书也很有参考价值。 
本书假设读者具备使用Java开发和部署业务应用的基本知识。本书旨在介绍使用Java平台设计、构建和开发应用时用到的所有安全机制，阐述如何使用设计方法、模式和最佳实践以及需要注意的陷阱，为软件架构师和开发人员提供宝贵的参考资料，以解决每天面临的实际汀安全问题。 
大多数人都没有时间完整地阅读软件开发书籍，因此本书分为几个不同的技术部分，让读者能够根据兴趣以任意顺序阅读。 
本书的组织结构 
本书分为七部分。 
第一部分：引言 
介绍当前行业状况、业务挑战以及各种应用安全问题和应对策略，阐述有关安全的基本知识。 
第1章：默认安全 
描述当前业务挑战、最薄弱的安全环节和严重的应用缺陷及漏洞。本章简要介绍了安全设计策略、模式驱动的安全开发概念、最佳实践和可行性检查；阐述了遵守安全法规的重要性以及身份管理、Java平台和身份识别技术(如智能卡和生物特征)；从业务的角度讨论了安全，并展示安全技术可以推进业务，并能够带来收益。 
第2章：安全基本知识 
本章介绍有关安全的基本知识，其中包括各种安全技术的背景知识和指导原则；概述使用流行的加密技术确保应用的安全，还讨论目录服务和身份管理在安全中的作用。 
第二部分：Java安全架构与技术 
这部分深入介绍和演示了使用J2SE、J2EE、J2ME和JavaCard技术的安全实践；深入研究Java平台安全架构中复杂的技术细节，及其在为基于Java的应用提供端到端安全解决方案中的作用。 
第3章：Java2平台安全 
本章讨论了各种Java平台固有的安全特性，以及如何在独立的Java应用、applet、Java Web start(JNLP)应用、J2ME MIDlet和Java Card applet中实现Java安全；阐述如何使用Java安全管理工具来管理密钥和证书；还讨论使用Java代码混淆技术的重要性。 
第4章：Java可扩展安全与API 
本章深入讨论Java可扩展安全架构及其API框架，以及如何使用这些API实现在基于Java的应用解决方案中构建端到端安全。具体地说，本章演示如何使用Java安全API来应用加密机制和公钥基础设施，如何确保应用通信的安全。 
第5章：J2EE安全架构 
本章解释J2EE安全架构和机制以及如何将其应用于各种应用层和组件中；深入讨论应用于Web组件(JSP、Servlet和JSF)、业务组件(EJB)和集成组件(JMS、JDBC和J2EE连接器)的J2EE安全机制；阐述基于J2EE的Web服务安全及相关技术；还阐述各种用于设计DMZ网络拓扑的架构方案，以便在产品环境中确保J2EE应用的安全。.. 
第三部分：Web服务安全和身份管理 
这部分重点介绍支持Web服务安全和身份管理的行业标准计划和技术。 
第6章：Web服务安全标准与技术 
本章解释Web服务架构及其核心构件、常见的Web服务安全威胁和攻击、Web服务安全需求以及Web服务安全标准和技术；深入介绍如何使用诸如XML签名、XML加密、XKMS、WS-Security、SAML概要、REL概要和WS-I基本安全概要等行业标准计划来表示基于XML的安全；还介绍基于Java的Web服务基础设施提供者，以及有助于确保Web服务安全的支持XML的安全设备。 
第7章：身份管理标准与技术 
本章深入讨论对管理身份信息来说不可或缺的标准和技术；介绍身份管理面临的挑战，以及实现基于标准的身份管理的架构模型；还演示如何使用SAML、XACML和Liberty Alliance规范等XML标准来实现联合身份管理和支持身份的服务。 
第四部分：安全设计方法、模式和可行性检查 
这部分描述一种安全设计方法并介绍一种模式驱动的安全设计方法，在软件设计和开发过程中可以使用它们。 
第8章：安全设计点金术：方法、模式和可行性检查 
本章首先简要地讨论使用安全设计方法的重要性，然后详细地讨论安全设计过程：在整个软件生命周期内确定并应用安全模式，包括架构、设计、开发、部署、生产和废弃。该章描述安全设计中的各种角色及其职责，解释风险分析、权衡分析、效果分析、因素分析、层分析、威胁剖析和信任建模等核心安全分析过程。还介绍安全设计模式目录和安全评估核对表；在应用开发过程中，可以使用它们来解决安全需求或提供解决方案。 
第五部分：设计策略和最佳实践 
这部分介绍安全模式、策略和最佳实践，并按J2EE应用层、Web服务、身份管理和服务供应将它们进行分类。 
第9章：确保Web层安全：设计策略与最佳实践 
本章介绍7种安全模式，它们与设计和部署J2EEWeb层和表示层组件相关，如JSP、Servlet以及其他相关组件。每种模式都针对一种与Web层或表示层逻辑相关的常见问题，描述演示各种实现策略的设计解决方案；阐述使用模式的效果，强调使用模式时的安全因素和相关风险，并使用可行性检查验证模式的适用性。该章还列出了用于确保J2EE Web组件和基于Web的应用的最佳实践。 
第10章：确保业务层安全：设计策略与最佳实践 
本章介绍7种安全模式，它们与设计和部署J2EE业务层组件相关，如EJB、JMS以及其他相关组件。每种模式都针对一组与业务层相关的安全问题，描述演示各种实现策略的设计解决方案以及使用模式的效果；强调使用业务层安全模式的安全因素和相关风险，并使用可行性检查验证模式的适用性。该章还列出用于确保J2EE业务组件安全的最佳实践和陷阱。 
第11章：确保Web服务的安全：设计策略与最佳实践 
本章介绍3种安全模式，它们与设计和部署Web服务相关。首先讨论Web服务安全基础设施和有助于确保安全的重要组件。然后描述各种安全模式，每种模式都针对与业务层相关的安全问题，描述演示各种实现策略的设计解决方案以及使用Web服务模式的效果；强调使用安全模式的安全因素和相关风险，并使用可行性检查验证模式的适用性。最后，本章列出了用于确保Web服务安全的最佳实践和陷阱。 
第12章：确保身份安全：设计策略与最佳实践 
本章介绍3种与身份管理相关的安全模式。每种模式都针对一个身份管理问题，描述演示各种实现策略的设计解决方案以及使用模式的效果；强调使用业务层模式的安全因素和相关风险，并使用可行性检查验证模式的适用性。最后，列出用于身份管理的最佳实践。 
第13章：安全服务供应：设计策略与最佳实践 
本章首先简要地讨论业务挑战、服务供应的范围以及服务供应与身份管理的关系，然后详细介绍用户账户供应过程并讨论各种架构和应用场景。该章介绍一种用户账户供应的安全模式，并阐述实现策略和使用该模式的效果；然后指出使用该模式的安全因素和相关风险，并使用可行性检查验证该模式的适用性。还介绍SPML及其同服务供应的关系。最后，本章列出服务供应最佳实践。 
第六部分：综合应用 
这部分通过案例研究说明实际的安全实现情形，描述如何使用模式和最佳实践完成安全设计过程。 
第14章：构建端到端安全架构：案例研究 
本章通过一个实际的Web门户，说明如何使用本书介绍的安全设计方法、设计模式和最佳实践来定义和实现端到端安全解决方案。本章通过完成整个安全设计过程，演示如何分析和识别风险，如何进行权衡，如何选择并应用安全模式，以及如何执行因素分析、层分析、威胁剖析和可行性检查。还详细介绍如何采用模式驱动的设计过程和注意事项，并描述如何协调不同逻辑层的安全以提供端到端安全。 
第七部分：使用智能卡和生物特征的身份识别 
这部分深入讨论使用智能卡和生物特征的身份识别，深入研究使用智能卡、生物特征和结合使用它们时的支持技术、架构和实现策略。 
第15章：使用智能卡和生物特征的身份识别 
本章探讨使用智能卡和生物特征实现身份识别和认证的概念、技术、架构策略和最佳实践。首先讨论融合物理和逻辑访问控制的重要性，以及智能卡和生物特征在身份识别中的作用；然后阐述在基于J2EE的企业应用、UNIX和Windows环境中支持基于智能卡和生物特征认证的架构和实现策略；最后，列出将智能卡和生物特征用于安全身份识别的最佳实践。 
序言
在过去的20年中，无论是在网络级还是应用级，计算架构和技术都发生了巨大变化。很多工作都是在网络基础设施层完成的：入侵检测、反病毒、防火墙、VPN、服务质量、策略管理和实施、拒绝访问攻击的检测和防范以及端点安全。这些是必不可少的但还不够，必须在设计应用安全和部署应用安全基础设施方面做更大的努力。网络安全侧重于检测、防范和保护，而应用安全侧重于支持(enablement)以及遵守法规(如Sarbanes-Oxley、HIPPA、GLB等法案)。. 
无论是对于技术还是对于业务，都必须确保应用安全。安全程度高的公司将拥有竞争优势，能够降低成本并打人新市场，以及改善用户体验；无论是B2B应用(如供应链应用)还是B2C应用(如金融服务、电子零售)皆如此。随着网络连接到全球的各个角落以及带宽不断增加，开展业务的方式发生了重大转变，访问信息和资源的方式前所未有，安全已成为用户、企业、政府以及应用提供者和开发人员面临的重要问题。.. 
基于J2EE和Web服务的松散耦合分布式应用已成为开发基于标准的多厂商应用的首选模型，而主要的应用开发和部署平台提供的安全水平越来越高。安全不再是出现问题或攻击后添加的一层或多层，而必须纳入设计的考虑之中，它是应用开发过程中不可分割的一部分。安全是事先需要考虑的因素，而不是事后的亡羊补牢。 
本书全面介绍了开发应用安全策略和实现时需要考虑的各种要素和因素。作为网络计算、分布式应用和Java系统的先锋和领先者，Sun Microsystems在这个领域处于独一无二的地位。作为已有应用的开发者或推动下一代分布式应用的革新者，本书介绍的信息和最佳实践将是你完成开发工作的重要资产。确保企业和最终用户自信、安全地体验Internet的重任将由你们承担。
Joe Uniejewski 
RSA Security公司CTO兼负责企业开发的高级副总裁