安全

安全性是应用程序服务器环境的一个关键方面。 IBM® WebSphere® Application Server 使用行业标准来保护应用程序和资源。

WebSphere Application Server 提供了安全基础结构和机制来保护敏感的 Java™ Platform, Enterprise Edition (Java EE) 资源和管理资源。 它还可以满足企业端对端安全性对下列各方面的要求:
  • 认证
  • 资源访问控制
  • 数据完整性
  • 机密性
  • 隐私
  • 安全互操作性
IBM WebSphere Application Server 安全性基于行业标准,具有开放式体系结构,可确保与企业信息系统 (EIS) 的安全连接和互操作性,包括:
  • 数据库 2 (DB2®)
  • CICS ®
  • [AIX Solaris HP-UX Linux Windows]Information Management System (IMS)
  • MQ Series
  • Lotus® Domino®
  • IBM 目录
WebSphere Application Server 还支持其他安全提供程序,包括:
  • IBM Tivoli ® Access Manager (Policy Director)
  • 反向安全代理服务器(包括 WebSEAL)

基于业界标准

IBM WebSphere Application Server 提供了一个统一的,基于策略的,基于许可权的模型,用于根据 J2EE 规范保护 Web 资源, Web Service 端点和企业 JavaBeans 。 具体而言, WebSphere Application Server 符合 Java EE 6 规范,并且已通过 J2EE 兼容性测试套件。

WebSphere Application Server 安全性是基于操作系统平台, Java 虚拟机 (JVM) 和 Java 2 安全性构建的分层体系结构。 此安全模型利用大量安全性技术集合,包括:
  • Java 2 安全模型,它提供对系统资源的基于策略,细颗粒度和基于许可权的访问控制。
  • 除了安全认证服务 (SAS) 安全性协议之外,还有公共安全互操作性 V2 (CSIv2) 安全性协议。 先前的 WebSphere Application Server 发行版支持这两种协议。 CSIv2 是 J2EE 1.4 规范的主要部分,并且对于不同供应商的应用程序服务器间的互操作性以及与企业 CORBA 服务的互操作是必不可少的。
  • Java 应用程序, Servlet 和企业 Bean 的 Java 认证和授权服务 (JAAS) 编程模型。
  • J2EE 连接器体系结构,用于插入支持访问企业信息系统的资源适配器。

支持安全套接字通信,消息加密和数据加密的标准安全模型和接口是 Java 安全套接字扩展 (JSSE) 和 Java 加密扩展 (JCE)。

开放式体系结构范例

应用程序服务器充当多层企业计算框架的主要部分。 IBM WebSphere Application Server 采用开放式体系结构范例,并提供许多插件点以与企业软件组件集成。 插件点基于所适用的标准 J2EE 规范。

开放式体系结构范例

深蓝色阴影背景指示 WebSphere Application ServerV 9.0 与其他业务应用程序组件之间的边界。

[AIX Solaris HP-UX Linux Windows][IBM i]WebSphere Application Server 提供简单 WebSphere 认证机制 (SWAM) ,轻量级第三方认证 (LTPA) 和 Kerberos 作为认证机制。 正好可以将一个用户注册表实现配置为 WebSphere Application Server 安全域的活动用户注册表。 WebSphere Application Server 提供以下用户注册表实现 :UNIX , Windows 和 IBM i 本地操作系统和轻量级目录访问协议 (LDAP)。 它还提供基于文件的和基于 Java 的数据库连接 (JDBC) 的用户注册表引用实现。 它支持认证机制和用户注册表的灵活组合。 SWAM 的配置很简单,并且对于单一应用程序服务器环境很有用。 如果启用了 身份断言,那么有可能在分布式环境中使用 SWAM。 身份断言功能仅可用于 CSIv2 安全性协议。
注:WebSphere Application Server的先前发行版中已不推荐使用 SWAM ,将在将来的发行版中除去 SWAM。

[AIX Solaris HP-UX Linux Windows][IBM i]LTPA 认证机制专为所有平台安全性而设计。 下游服务器可验证安全性令牌。 它还支持设置与反向安全代理服务器和单点登录 (SSO) 的信任关联关系,这将在以后讨论。 除了 LTPA 和 LDAP 组合或定制用户注册表接口外,V6.x 或更高版本还支持带有本地操作系统用户注册表接口的 LTPA。 新配置对于具有多个应用程序服务器的单个节点特别有用。 如果本地操作系统用户注册表实现是集中用户注册表 (例如 Windows 域控制器) ,或者可以在多个节点上保持一致状态,那么它可以在分布式环境中运行。

[AIX Solaris HP-UX Linux Windows][IBM i]WebSphere Application Server 支持 J2EE 连接器体系结构并提供容器管理的认证。 它提供了缺省 Java 2 连接器 (J2C) 主体和凭证映射模块,用于将任何已认证的用户凭证映射到指定企业信息系统 (EIS) 安全域的密码凭证。 映射模块是根据 Java 2 连接器和 JAAS 规范设计的特殊 JAAS 登录模块。 可以插入其他映射登录模块。

Web Service 安全性

WebSphere Application Server 使您能够根据结构化信息标准提高组织 (OASIS) Web Service 安全性 V 1.1 规范来保护 Web Service。 这些标准说明如何为 Web Service 环境中交换的消息提供保护。 此规范定义了保护消息的完整性和机密性的核心工具,并提供了将与安全相关的声明与消息相关联的机制。

信任关联

信任关联使您能够将第三方安全服务器与 IBM WebSphere Application Server 安全性集成。 更具体地说,逆向代理服务器可以充当前端认证服务器,而 WebSphere Application Server 会将其自己的授权策略应用于由代理服务器传递的生成凭证。 逆向代理服务器将其认证策略应用于分派给 WebSphere Application Server的每个 Web 请求。 实现信任关联拦截器 (TAI) 的产品有:
  • IBM Tivoli Access Manager for e-business
  • WebSEAL
  • 高速缓存代理
有关使用信任关联的更多信息,请参阅 信任关联

安全性属性传播

安全性属性传播 使 WebSphere Application Server 能够将安全性属性从配置中的一个服务器传输到另一个服务器。 安全性属性包括已认证的主体集内容和安全上下文信息。 WebSphere Application Server 可以从以下任一项获取这些安全性属性:
  • 企业用户注册表,它查询静态属性
  • 定制登录模块,它可以查询静态或动态属性
安全性属性传播为主题中包含的任何对象提供使用 Java 序列化的传播服务。

单点登录互操作性方式

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).

[AIX Solaris HP-UX Linux Windows]

Java 2 安全性

WebSphere Application Server 支持 Java 2 安全模型。 系统代码 (例如,管理子系统, Web 容器和 EJB 容器) 正在 WebSphere Application Server 安全域中运行,此安全域在当前实现中是使用 AllPermission 授予的,并且可以访问所有系统资源。 应用程序代码在应用程序安全域中运行,缺省情况下,根据 J2EE 规范它被授予许可权并且仅可以访问有限的系统资源集。 WebSphere Application Server 运行时类受 WebSphere Application Server 类装入器保护,并且对应用程序代码不可见。

[AIX Solaris HP-UX Linux Windows]

Java 2 Platform , Enterprise Edition 连接器安全性

WebSphere Application Server 支持 J2EE 连接器体系结构,并提供容器管理的认证。 它提供缺省 J2C 主体和凭证映射模块,该模块将任何已认证的用户凭证映射至指定的企业信息系统 (EIS) 安全域的密码凭证。

缺省情况下,所有应用程序服务器进程共享公共安全配置,这是在单元级别安全性 XML 文档中定义的。 安全性配置确定是否强制实施 WebSphere Application Server 安全性,是否强制实施 Java 2 安全性,认证机制和用户注册表配置,安全协议配置, JAAS 登录配置和安全套接字层配置。 应用程序可以有自己的独 特安全要求。 每个应用程序服务器进程都可以创建每个服务器的安全配置,以满足其自己的安全需求或映射到 WebSphere 安全域。 不是所有的安全配置都可以在应用程序服务器级别进行修改。 可以在应用程序服务器级别修改的一些安全配置包括是否应强制实施应用程序安全性,是否应强制实施 Java 2 安全性以及安全协议配置。 WebSphere 安全域允许对安全性配置进行更多控制,并且可以映射到各个服务器。 有关更多信息,请阅读“多个安全域”。

管理子系统安全配置总是由单元级别安全性文档确定的。 Web 容器和 EJB 容器安全性配置由可选的个别服务器级别安全性文档决定,该文档优先于单元级别安全性文档。

单元级别和应用程序服务器级别的安全配置由基于 Web 的管理控制台应用程序或适当的脚本编制应用程序进行管理。

Web 安全性

为 Web 资源指定安全策略并且强制实施 IBM WebSphere Application Server 安全性时,当 Web 客户机请求该资源时, Web 容器将执行访问控制。 如果不存在任何认证数据,那么 Web 容器会根据指定的认证方法来质询 Web 客户机以获取认证数据,从而确保满足数据约束,并确定已认证的用户是否具有需要的安全角色。 WebSphere Application Server 支持以下登录方法:
  • HTTP 基本认证
  • HTTPS 客户机认证
  • 基于表单的登录
  • 简单且受保护的 GSS-API 协商 (SPNEGO) 令牌
将客户机证书映射到 WebSphere Application Server 安全凭证将使用 UserRegistry 实现来执行映射。

[AIX Solaris HP-UX Linux Windows][IBM i]在 WebSphere Application Server上,本地操作系统用户注册表不支持映射功能。

[AIX Solaris HP-UX Linux Windows][IBM i]配置 LTPA 认证机制并启用单点登录 (SSO) 时,将向已认证的客户机发出安全 Cookie ,该 Cookie 可以表示指定安全域中的用户。

建议使用安全套接字层 (SSL),以保护安全性 Cookie 或基本认证信息不被拦截和重放。 配置信任关联时, WebSphere Application Server 可以根据与安全逆向代理服务器建立的信任关系将已认证的用户身份映射到安全凭证。

Web 安全性
考虑 Web 安全性协调程序和 EJB 安全性协调程序时:
  1. Web 安全性协调程序通过使用访问管理器实现来执行基于角色的访问控制。 访问管理器根据源自部署描述符的安全策略做出授权决定。 如果已认证的用户主体具有某个必需的安全角色,那么它可访问已请求的 Servlet 或 JSP 文件。 Servlet 和 JSP 文件可以使用 HttpServlet请求方法:isUserInRole,getUserPrincipalgetRemoteUser. 例如,管理控制台使用isUserInRole确定要向用户主体公开的管理功能的正确集合的方法。
  2. EJB 安全性协调程序通过使用访问管理器实现来执行基于角色的访问控制。 访问管理器根据源自部署描述符的安全策略做出授权决定。 如果已认证的用户主体具有必需的安全角色之一,那么它可以访问请求的 EJB 方法。 EJB 代码可以使用 EJBContext 方法isCallerInRole以及getCallerPrincipal. EJB 代码还可以使用 JAAS 编程模型来执行 JAAS 登录和WSSubject doAs以及doAsPrivileged方法。 代码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 方法。 在 V 4.0 中引入的方法级别 IBM RunAs 扩展在此版本中仍受支持。

经联邦信息处理标准核准的

联邦信息处理标准 (FIPS) 是美国国家标准技术学会 (NIST) 为联邦计算机系统发布的标准和准则。 之所以开发 FIPS,是因为当时联邦政府迫切地希望达成统一标准(例如鉴于安全性和互操作性方面的需求),但却没有可接受的业界标准或解决方案。

WebSphere Application Server 集成了加密模块,包括经过 FIPS 140-$tag5 认证的 Java 安全套接字扩展 (JSSE) 和 Java 密码术扩展 (JCE)。

有关更多信息,请参阅 配置联邦信息处理标准 Java 安全套接字扩展文件

IBMJCEFIPS 模块支持下列对称密码套件:
  • AES (FIPS 197)
  • TripleDES (FIPS 46-3)
  • SHA1 消息摘要算法 (FIPS 180-1)
IBMJCEFIPS 模块支持下列算法:
  • 数字签名 DSA 和 RSA 算法 (FIPS 186-2)
  • ANSI X 9.31 (FIPS 186-2)
  • IBM 随机数字生成器

IBMJCEFIPS 加密模块包含经 FIPS 核准的算法,这些算法构成 IBM JCE 模块中这些算法的适当子集。