为 Liberty JVM 服务器配置安全性

您可以使用 CICS® Liberty 安全功能部件来认证用户,并通过 Java™ Platform, Enterprise Edition 角色 (Java EE 角色) 授予对 Web 应用程序的访问权,从而提供与 CICS 事务和资源安全性的集成。 您还可以使用 CICS 资源安全性来授权相应用户管理部署在 CICS BUNDLE 资源中的 JVMSERVER 资源和 Java Web 应用程序的生命周期。 在本主题中,认证通常通过要求用户输入用户名和密码来验证给定用户的身份。 授权根据已认证用户的身份授予访问控制许可权。

开始之前

  1. 确保将 CICS 区域配置为使用 SAF 安全性,并将 SEC=YES 定义为系统初始化参数。
  2. 授权应用程序开发者和系统管理员创建,查看,更新和除去 JVMSERVER 和 BUNDLE 资源,以将 Web 应用程序部署到 Liberty JVM 服务器中。

JVMSERVER 资源控制 JVM 服务器的可用性, BUNDLE 资源是 Java 应用程序的部署单元,并控制应用程序的可用性。 CICS TS 安全功能部件 cicsts:security-1.0的缺省行为是使用 SAF 注册表。 如果使用 LDAP 注册表,那么不会创建 SAF 注册表,有关更多信息,请参阅 使用分布式身份映射为 Liberty JVM 服务器配置安全性。 基本用户注册表 (也由 quickStartSecurity使用) 仅适用于简单的安全性测试。 请注意,如果使用基本用户注册表进行配置和运行,并且需要切换到 cicsts:security-1.0,那么需要删除会话令牌。

关于此任务

此任务说明如何为 Liberty JVM 服务器配置安全性并将 Liberty 安全性与 CICS 安全性集成。 有关如何为 "链接到 Liberty" 配置安全性的信息,请参阅 从 CICS 程序链接到 Java EE 应用程序

用于运行 Web 请求的缺省事务标识为 CJSA。 但是,您可以使用类型为 JVMSERVER 的 URIMAP 将 CICS 配置为在其他事务标识下运行 Web 请求。 通常,您可以指定 URIMAP 来匹配 Web 应用程序的一般上下文根 (URI),将事务标识限定于组成应用程序的 servlet 集合。 或者您可以选择用更加精确的 URI 在不同的事务下运行每个单独的 servlet。

用于运行 Web 请求的缺省用户标识是 CICS 缺省用户标识。 如果 URIMAP 可用并且包含静态用户标识,那么将优先使用缺省用户标识。 如果 Web 请求在其安全性头中包含用户标识,那么它优先于所有其他机制。

缺省情况下,源自 Liberty 且未分类为 Web 请求的任务在 CJSU 事务下运行。 虽然这些类型的任务没有 URIMAP 样式机制,但您可以使用 JVM 概要文件属性 com.ibm.cics.jvmserver.unclassified.tranid 来覆盖缺省事务标识,并使用 JVM 概要文件属性 com.ibm.cics.jvmserver.unclassified.userid来覆盖缺省用户标识。
注: 用户标识需要附加指定事务的许可权。 有关更多信息,请参阅 事务安全性

过程

  1. 配置 Liberty Angel 进程以向 Liberty JVM 服务器提供认证和授权服务,请参阅 Liberty 服务器 Angel 进程
    提示: 如果您具有指定的 Angel 进程,那么需要通过将以下行添加到 JVM 概要文件来配置 Liberty JVM 服务器以连接到该进程。
    -Dcom.ibm.ws.zos.core.angelName=<named_angel>
  2. 可选: 通过将以下行添加到 JVM 概要文件,强制要求在启用 Liberty JVM 服务器时连接到 Liberty Angel 进程:
    -Dcom.ibm.ws.zos.core.angelRequired=true

    如果 Angel 进程不可用,那么此选项将阻止 Liberty JVM 服务器启动。

    对于带有 APAR PI92676 或更高版本的 CICS TS V5.4 ,此选项指示 CICS 调用 Liberty Angel 进程检查 API 以验证 Angel 进程是否可用于 Liberty JVM 服务器启动。
    如果 Angel 进程不可用,那么 CICS 将按如下所示进行反应:
    • 如果正在通过 CEMT 事务启用 Liberty JVM 服务器,那么将发出一条消息,并且将禁用 Liberty JVM 服务器。
    • 如果通过 SET JVMSERVER SPI 命令或通过 CICS Explorer使用 CMCI 来启用 Liberty JVM 服务器,那么将发出一条消息,并且将禁用 Liberty JVM 服务器。
    • 如果 CICS CREATE SPI , BAS 或 GRPLIST 正在启用 Liberty JVM 服务器,那么将发出一条消息, CICS 将等待 30 秒,然后再重试 Liberty Angel 进程检查 API 调用。 如果 Angel 进程在第五次尝试时不可用,那么将发出 WTOR 消息,为操作员提供继续等待或禁用 JVMSERVER 资源的选项。
  3. cicsts:security-1.0 功能部件添加到 server.xml中的 featureManager 列表,
    <featureManager>
       ...
       <feature>cicsts:security-1.0</feature>
    </featureManager>
    ...
    
  4. 使用以下示例将系统授权工具 (SAF) 注册表添加到 server.xml :
    <safRegistry id="saf" enableFailover="false"/>
  5. 将更改保存到 server.xml
  6. 可选: 或者,如果在 CICS 区域中自动配置 Liberty JVM 服务器并且 SEC 系统初始化参数设置为 YES ,那么在重新启动 JVM 服务器时,将动态配置 Liberty JVM 服务器以支持 Liberty JVM 安全性。 有关更多信息,请参阅 配置 Liberty JVM 服务器
    如果 SEC 系统初始化参数设置为“NO”,仍可将 Liberty 安全性用于认证或 SSL 支持。 如果 CICS 安全性已关闭,并且您想要使用 Liberty 安全性,那么必须手动配置 server.xml 文件:
    1. appSecurity-2.0 功能部件添加到 featureManager 列表。
    2. 添加用户注册表以认证用户。 Liberty 安全性支持 SAF、LDAP 和基本用户注册表。 有关更多信息,请参阅 在 Liberty 中配置用户注册表
    3. 添加安全角色定义以授权访问应用程序资源,请参阅 授权用户在 Liberty JVM 服务器中运行应用程序

结果

Web 容器会自动配置为使用 Liberty 的 z/OS® 安全性功能部件。 SAF 注册表用于认证, Java EE 角色用于授权。 授权约束和安全角色控制谁可以访问应用程序。 这些通常在应用程序的部署描述符 (web.xml) 中定义,但也可以在源代码中定义为安全性注释。 通常,用户和组由 server.xml中的应用程序 <application-bnd> 元素映射到角色。 或者,如果在 server.xml中配置了<safAuthorization> 元素,那么映射将保存在 SAF 中 (在 RACF中作为 EJBROLES)。

下一步操作

注: 您还可以通过为 Liberty 配置 RunAs 规范来将认证委派给其他身份,请参阅 在 Liberty 中配置 RunAs 认证

有关使用安全套接字层 (SSL) 的更多信息,请参阅 使用 Java 密钥库为 Liberty JVM 服务器配置 SSL (TLS)