安全性
安全性是应用程序服务器环境的一个关键方面。 IBM® WebSphere® Application Server 使用行业标准来保护应用程序和资源。
- 认证
- 资源访问控制
- 数据完整性
- 机密性
- 隐私
- 安全互操作性
- 数据库 2 (DB2®)
- CICS®
Information Management System (IMS)
- MQ Series
- Lotus Domino
- IBM 目录
任何符合系统授权工具 (SAF) 的安全服务器,包括 IBM z/OS® Security Server Resource Access Control Facility (RACF®)
- 反向安全代理服务器(包括 WebSEAL)
标识管理:
对于 WebSphere Application Server V 7.x 和先前发行版:
要利用 SAF 安全性功能,用户必须使用基于 z/OS 的用户标识来标识其自身。 您可以使用主体映射模块将 J2EE 身份映射到基于平台的用户标识 (在本例中为 RACF 用户标识)。 必须创建从 LDAP 用户标识到 RACF 用户标识的主体映射,才能执行 SAF EJBROLE 检查。 这意味着映射登录模块必须可用于从 LDAP 注册表中配置的用户派生 z/OS 用户标识。 (SMF 审计(使用 SAF)可用于跟踪这些更改。)
新增 WebSphere Application Server 8.0 及更高版本:
- 使用 JAAS 映射模块将 J2EE 身份映射到 SAF 身份。
- 使用 SAF 中的分布式身份映射功能,这需要特定的 SAF 版本。 不应在 WebSphere中配置 JAAS 映射模块。 在这种情况下,用户使用其分布式用户身份来标识自身;例如,LDAP 注册表中的用户身份。 映射由 z/OS 安全性管理员使用 RACMAP SAF 概要文件进行处理。 此选项通过允许在审计记录中记录分布式用户身份和 SAF 身份来增强 SMF 审计。 有关更多信息,请参阅“使用 SAF 的分布式身份映射”。
基于业界标准
IBM WebSphere Application Server 提供了一个统一的,基于策略的,基于许可权的模型,用于根据 J2EE 规范保护 Web 资源, Web Service 端点和企业 JavaBeans 。 具体而言, WebSphere Application Server 符合 Java EE 6 规范,并且已通过 J2EE 兼容性测试套件。
- Java 2 安全模型,它提供对系统资源的基于策略,细颗粒度和基于许可权的访问控制。
- 除了安全认证服务 (SAS) 安全性协议之外,还有公共安全互操作性 V2 (CSIv2) 安全性协议。 先前的 WebSphere Application Server 发行版支持这两种协议。 CSIv2 是 J2EE 1.4 规范的主要部分,并且对于不同供应商的应用程序服务器间的互操作性以及与企业
CORBA 服务的互操作是必不可少的。
重要信息: SAS 仅在 V 6.0.x 与已在 V 6.1 单元中联合的先前版本服务器之间受支持。
- Java 应用程序, Servlet 和企业 Bean 的 Java 认证和授权服务 (JAAS) 编程模型。
- J2EE 连接器体系结构,用于插入支持访问企业信息系统的资源适配器。
支持安全套接字通信,消息加密和数据加密的标准安全模型和接口是 Java 安全套接字扩展 (JSSE) 和 Java 加密扩展 (JCE)。
开放式体系结构范例
应用程序服务器充当多层企业计算框架的主要部分。 IBM WebSphere Application Server 采用开放式体系结构范例,并提供许多插件点以与企业软件组件集成。 插件点基于所适用的标准 J2EE 规范。

深蓝色阴影背景指示 WebSphere Application ServerV 9.0 与其他业务应用程序组件之间的边界。
LTPA 认证机制专为所有平台安全性而设计。 下游服务器可验证安全性令牌。 它还支持设置与反向安全代理服务器和单点登录 (SSO) 的信任关联关系,这将在以后讨论。 除了 LTPA 和 LDAP 组合或定制用户注册表接口外,V6.x 或更高版本还支持带有本地操作系统用户注册表接口的 LTPA。 新配置对于具有多个应用程序服务器的单个节点特别有用。 如果本地操作系统用户注册表实现是集中用户注册表 (例如 Windows 域控制器) ,或者可以在多个节点上保持一致状态,那么它可以在分布式环境中运行。
WebSphere Application Server 支持 J2EE 连接器体系结构,并提供容器管理的认证。 它提供了缺省 Java 2 连接器 (J2C) 主体和凭证映射模块,用于将任何已认证的用户凭证映射到指定企业信息系统 (EIS) 安全域的密码凭证。 映射模块是根据 Java 2 连接器和 JAAS 规范设计的特殊 JAAS 登录模块。 可以插入其他映射登录模块。
用户注册表和访问控制
用户注册表中包含的用户信息和组信息。 在 WebSphere Application Server中,用户注册表认证用户并检索有关用户和组的信息以执行与安全性相关的功能,包括认证和授权。
- 本地操作系统(基于 SAF)
- LDAP
- 联合存储库
除了本地操作系统, LDAP 和联合存储库注册表外, WebSphere Application Server 还提供了一个插件,用于通过使用定制注册表功能 (也称为定制用户注册表) 来支持任何注册表。
选择 WebSphere Application Server 的本地操作系统注册表实现时,它使您能够直接在 WebSphere 环境中使用安全访问设施 (SAF) 来集成 z/OS Security Server 的功能,例如 Resource Access Control Facility (RACF)。 如果配置本地操作系统以外的注册表,那么还可以使用具有两个选项的 z/OS Security Server 工具。 您可以在相应的系统登录配置中配置可插入的 JAAS 映射模块 (后跟 WebSphere Application Server for z/OS提供的 JAAS 登录模块)。 在 WebSphere Application Server 版本 8.5中,您也可以使用分布式身份映射功能。
有关更多信息,请参阅 选择注册表或存储库。
WebSphere Application Server 配置: 通过 WebSphere Application ServerV 9.0 for z/OS ,您可以将现有非z/OS 应用程序与特定于 z/OS的设施 (例如,系统授权工具 (SAF) 和 RACF) 集成。 这允许您统一 WebSphere Application Server for z/OS 和非z/OS 平台的注册表。 例如:
| 应用程序服务器配置 | 注册表类型 | 授权方法 | 优点 |
|---|---|---|---|
| WebSphere Application Server | LDAP | WebSphere 绑定和外部安全提供程序,例如 Tivoli ® Access Manager | 共享的注册表(跨不同种类的平台) |
| WebSphere Application Server for z/OS | RACF | WebSphere 绑定和 RACF EJBROLE | 集中访问和审计能力(可以包括运行 V4.0 的服务器) |
| WebSphere Application Server 混合环境 | LDAP 或定制 | WebSphere 绑定,外部安全提供程序和 RACF EJBROLE | 共享的注册表、集中访问和审计功能 |
- WebSphere Application Server 网络注册表配置

- WebSphere Application Server for z/OS 网络注册表配置:

- 具有 z/OS 安全性扩展的WebSphere Application Server 网络注册表

认证机制
- 轻量级第三方认证 (LTPA)
轻量级第三方认证为已认证的用户生成安全性令牌,该安全性令牌可用于 在接下来调用单点登录 (SSO) 域的同一服务器或其他服务器时代表已认证的用户。
- Kerberos
已为此发行版的 WebSphere Application Server添加对 Kerberos 作为认证机制的安全性支持。 Kerberos 是一种成熟、灵活、开放式且非常安全的网络认证协议。 Kerberos 包括认证、相互认证、消息完整性和机密性以及委派功能。
- 简单 WebSphere 认证机制(SWAM)SWAM 的配置很简单,并且对于单一应用程序服务器环境很有用,但是对每个请求强制执行用户标识和密码认证。注: 在 WebSphere Application Server的先前发行版中已不推荐使用 SWAM ,将在将来的发行版中除去 SWAM。
IIOP 认证协议
IIOP 认证协议是指用于向 WebSphere Application Server for z/OS或者在 J2EE 应用程序服务器之间认证请求的机制。 公共安全互操作性 V 2 (CSIv2) 在 WebSphere Application Server for z/OS V 6.x 或更高版本中实现,并被视为战略协议。
WebSphere Application Server for z/OS 连接器安全性
WebSphere Application Server 支持 J2EE 连接器体系结构,并提供容器管理的认证。 它提供缺省 J2C 主体和凭证映射模块,该模块将任何已认证的用户凭证映射至指定的企业信息系统 (EIS) 安全域的密码凭证。 当 EIS 系统与 WebSphere Application Server位于同一安全域中时,还支持特定于 z/OS的连接器。 在这种情况下,不需要密码,因为用于 J2EE 请求的已认证凭证可用作 EIS 凭证。
Web Service 安全
WebSphere Application Server 使您能够根据结构化信息标准提高组织 (OASIS) Web Service 安全性 V 1.1 规范来保护 Web Service。 这些标准说明如何为 Web Service 环境中交换的消息提供保护。 此规范定义了保护消息的完整性和机密性的核心工具,并提供了将与安全相关的声明与消息相关联的机制。
信任关联
- IBM Tivoli Access Manager for e-business
- WebSEAL
- 高速缓存代理
安全性属性传播
- 企业用户注册表,它查询静态属性
- 定制登录模块,它可以查询静态或动态属性
单点登录互操作性方式
在 WebSphere Application Server中,互操作性方式选项允许 WebSphere Application Server V 6.1.x 或更高版本之间的单点登录 (SSO) 连接与先前版本进行互操作 应用程序服务器。 选择此选项时, WebSphere Application Server 会将旧样式 LtpaToken 添加到响应中,以便可以将其发送到仅使用此令牌类型的其他服务器。 只有在启用了 Web 入站安全性属性传播选项的情况下,此选项才适用。 有关单点登录的更多信息,请参阅 实现单点登录以最小化 Web 用户认证
使用 Web 容器和 EJB 容器的 J2EE 资源的安全性
每个容器提供两种类型的安全性:声明式安全性和程序化安全性。 在声明式安全性中,应用程序的安全性结构(包括数据完整性和机密性、认证要求、安全角色和访问控制)以应用程序外部的形式表示。 特别地,部署描述符是 J2EE 平台中声明式安全性的主要手段。 WebSphere Application Server 维护 J2EE 安全策略,包括从部署描述符派生并由部署者和管理员在一组 XML 描述符文件中指定的信息。 运行时,容器使用 XML 描述符文件中定义的安全策略执行数据约束和访问控制。 当使用声明式安全性不足以表示应用程序的安全模型时,应用程序代码可使用程序化安全性作出访问决定。 用于程序化安全性的应用程序编程接口 (API) 由 Enterprise JavaBeans (EJB) EJBContext 接口 (isCallerInRole,getCallerPrincipal) servlet HttpServletrequest 接口的三个方法 (isUserInRole,getUserPrincipal,getRemoteUser).
Java 2 安全性
WebSphere Application Server 支持 Java 2 安全模型。 系统代码 (例如,管理子系统, Web 容器和 EJB 容器) 正在 WebSphere Application Server 安全域中运行,此安全域在当前实现中是使用 AllPermission 授予的,并且可以访问所有系统资源。 应用程序代码在应用程序安全域中运行,缺省情况下,根据 J2EE 规范它被授予许可权并且仅可以访问有限的系统资源集。 WebSphere Application Server 运行时类受 WebSphere Application Server 类装入器保护,并且对应用程序代码不可见。
Java 2 Platform , Enterprise Edition 连接器安全性
WebSphere Application Server 支持 J2EE 连接器体系结构,并提供容器管理的认证。 它提供缺省 J2C 主体和凭证映射模块,该模块将任何已认证的用户凭证映射至指定的企业信息系统 (EIS) 安全域的密码凭证。
当 EIS 系统与 WebSphere Application Server位于同一安全域中时,也支持特定于 z/OS的连接器。 在这种情况下,不需要密码,因为用于 J2EE 请求的已认证凭证可用作 EIS 凭证。
有关更多信息,请参阅 连接线程标识。

缺省情况下,所有应用程序服务器进程共享公共安全配置,这是在单元级别安全性 XML 文档中定义的。 安全性配置确定是否强制实施 WebSphere Application Server 安全性,是否强制实施 Java 2 安全性,认证机制和用户注册表配置,安全协议配置, JAAS 登录配置和安全套接字层配置。 应用程序可以有自己的独 特安全要求。 每个应用程序服务器进程都可以创建每个服务器的安全配置,以满足其自己的安全需求或映射到 WebSphere 安全域。 不是所有的安全配置都可以在应用程序服务器级别进行修改。 可以在应用程序服务器级别修改的一些安全配置包括是否应强制实施应用程序安全性,是否应强制实施 Java 2 安全性以及安全协议配置。 WebSphere 安全域允许对安全性配置进行更多控制,并且可以映射到各个服务器。 有关更多信息,请阅读“多个安全域”。
有关更多常规信息,请参阅 具有线程身份支持的安全状态。
管理子系统安全配置总是由单元级别安全性文档确定的。 Web 容器和 EJB 容器安全性配置由可选的个别服务器级别安全性文档决定,该文档优先于单元级别安全性文档。
单元级别和应用程序服务器级别的安全配置由基于 Web 的管理控制台应用程序或适当的脚本编制应用程序进行管理。
Web 安全性
- HTTP 基本认证
- HTTPS 客户机认证
- 基于表单的登录
- 简单且受保护的 GSS-API 协商 (SPNEGO) 令牌
在 WebSphere Application Server上,本地操作系统用户注册表不支持映射功能。
配置 LTPA 认证机制并启用单点登录 (SSO) 时,将向已认证的客户机发出安全 Cookie ,该 Cookie 可以表示指定安全域中的用户。
建议使用安全套接字层 (SSL),以保护安全性 Cookie 或基本认证信息不被拦截和重放。 配置信任关联时, WebSphere Application Server 可以根据与安全逆向代理服务器建立的信任关系将已认证的用户身份映射到安全凭证。

- Web 安全性协调程序通过使用访问管理器实现来执行基于角色的访问控制。 访问管理器根据源自部署描述符的安全策略做出授权决定。 如果已认证的用户主体具有某个必需的安全角色,那么它可访问已请求的 Servlet 或 JSP 文件。 Servlet 和 JSP 文件可以使用HttpServletRequest方法:isUserInRole,getUserPrincipal和getRemoteUser. 例如,管理控制台使用isUserInRole确定要向用户主体公开的管理功能的正确集合的方法。
- EJB 安全性协调程序通过使用访问管理器实现来执行基于角色的访问控制。 访问管理器根据源自部署描述符的安全策略做出授权决定。 如果已认证的用户主体具有必需的安全角色之一,那么它可以访问请求的 EJB 方法。 EJB 代码可以使用 EJBContext 方法isCallerInRole和getCallerPrincipal. EJB 代码还可以使用 JAAS 编程模型来执行 JAAS 登录和WSSubject doAs和doAsPrivileged:NONE. 代码doAs和doAsPrivileged PrivilegedAction块在主体标识下执行。 否则, EJB 方法将在以下任一项下执行:RunAs身份或呼叫者身份,具体取决于RunAs配置。
EJB 安全性
当启用了安全性时,EJB 容器执行对 EJB 方法调用的访问控制。 无 论是否为特定 EJB 方法定义了方法许可权,都会进行认证。
Java 应用程序客户机可以通过多种方式提供认证数据。 使用sas.client.props文件, Java 客户机可以指定是使用用户标识和密码进行认证,还是使用 SSL 客户机证书进行认证。 客户机证书存储在密钥文件或硬件加密卡中,如sas.client.props中。 可以选择在以下列表中定义用户标识和密码:sas.client.props中。
在运行时, Java 客户机可以执行程序化登录或执行 延迟认证。
在延迟认证中,当 Java 客户机首次访问受保护的企业 Bean 时,安全性运行时将尝试获取所需的认证数据。 根据配置设置sas.client.propsfile 安全性运行时从该文件中查找认证数据或提示用户。 或者, Java 客户机可以使用程序化登录。 WebSphere Application Server 支持 JAAS 编程模型,建议的程序化登录方式是 JAAS 登录 (LoginContext)。 在 V 6.x 和 V 9.0中不推荐使用 login_helper request_login 帮助程序函数。 编程到 login_helper APT 的 Java 客户机可以在此版本中运行。
EJB 安全性协调程序通过使用访问管理器实现来执行基于角色的访问控制。
访问管理器根据源自部署描述符的安全策略做出授权决定。 如果已认证的用户主体具有必需的安全角色之一,那么它可以访问请求的 EJB 方法。 EJB 代码可以使用 EJBContext 方法 isCallerInRole 和 getCallerPrincipal。 EJB 代码还可以使用 JAAS 编程模型执行 JAAS 登录,以及 WSSubject doAs 和 doAsPrivileged 方法。 doAs 和 doAsPrivileged PrivilegedAction 块中的代码在主体集标识下执行。 否则,根据运行方式配置,EJB 方法在运行方式标识或调用者标识下执行。 J2EE RunAs 规范在企业 Bean 级别上执行。 当指定运行方式标识时,它应用于所有的 Bean 方法。 该版本仍然支持4.0版中引入的方法级IBM RunAs扩展。
经联邦信息处理标准核准的
联邦信息处理标准 (FIPS) 是美国国家标准技术学会 (NIST) 为联邦计算机系统发布的标准和准则。 之所以开发 FIPS,是因为当时联邦政府迫切地希望达成统一标准(例如鉴于安全性和互操作性方面的需求),但却没有可接受的业界标准或解决方案。
WebSphere Application Server 集成了加密模块,包括经过 FIPS 140-$tag5 认证的 Java 安全套接字扩展 (JSSE) 和 Java 密码术扩展 (JCE)。
有关更多信息,请参阅 配置联邦信息处理标准 Java 安全套接字扩展文件。
- AES (FIPS 197)
- TripleDES (FIPS 46-3)
- SHA1 消息摘要算法 (FIPS 180-1)
- 数字签名 DSA 和 RSA 算法 (FIPS 186-2)
- ANSI X 9.31 (FIPS 186-2)
- IBM 随机数字生成器
IBMJCEFIPS 加密模块包含经 FIPS 核准的算法,这些算法构成 IBM JCE 模块中这些算法的适当子集。