授权用户在 Liberty JVM 服务器中运行应用程序

您可以使用 Java EE 应用程序安全角色来授权访问 Java EE 应用程序。 此外,在 Liberty JVM 服务器中,您可以使用 CICS 事务和资源安全性进一步限制对事务 (作为应用程序的一部分运行) 的访问。

关于此任务

通过在部署描述符 (web.xml) 中提供授权约束 <auth_constraint> 元素来保护应用程序。 如果存在,那么这将确保只有作为授权角色的成员的用户才能访问您的应用程序。 通过以下两种方式之一确定 Java EE 角色的用户或组成员资格:
  • server.xml<application> 元素中使用 <application-bnd> 元素,以 XML 格式直接描述用户/组到角色的映射。
  • server.xml 中使用 <safAuthorization> 以允许 SAF 映射用户/组角色成员资格 (通常使用 EJBROLES)。
有关更多信息,请参阅 使用 SAF 角色映射进行授权

使用 CICS 安全性允许您复用现有安全性过程,但需要从不同的 URIMAP 访问各个 Web 应用程序。 使用基于角色的安全性允许您使用来自另一个 Java EE 应用程序服务器的现有标准 Java EE 安全性定义。 有关更多信息,请参阅 在 Liberty JVM 服务器中认证用户

如果要独占使用 CICS 事务和资源授权,或者希望在代码中使用基于细颗粒度注释的角色检查,那么可以通过使用特殊主体集 ALL_AUTHENTICATED_USERS 角色将授权决策延迟到这些组件,如以下示例中所示。 如果在 CICS 束中部署 Liberty 应用程序,那么 CICS 会自动为您配置此应用程序。
注: 仅在验证配置的约束 (web.xml) 后,才会对声明式安全性注释和 CICS 事务和资源安全性执行访问检查
<application id="com.ibm.cics.server.examples.wlp.tsq.app" 
    name="com.ibm.cics.server.examples.wlp.tsq.app" type="eba" 
    location="${server.output.dir}/installedApps/com.ibm.cics.server.examples.wlp.tsq.app.eba">
	<application-bnd>
		<security-role name="cicsAllAuthenticated">
			<special-subject type="ALL_AUTHENTICATED_USERS"/>
		</security-role>
	</application-bnd>
</application>

使用这个特殊主题,并授予 cicsAllAuthenticated访问您的Web应用程序部署描述符( web.xml )中所有URL的权限,允许使用任何经过身份验证的用户ID访问Web应用程序,并且必须使用 CICS 事务安全性来控制事务授权。 如果将应用程序直接部署到 dropins 目录中,那么不会将其配置为使用 CICS 安全性,因为 dropins 不支持安全性。

如果您正在使用 safAuthorization ,那么 <application-bnd> 不再充当用户标识到角色映射的源。 相反, SAF 中的 EJBROLE 确定哪些 SAF 用户具有哪些角色 (EJBROLE)。 对于 safAuthorization ,将忽略 <application-bnd> 。 要实现相同效果并允许所有已认证的用户有权运行应用程序, web.xml 中的 <auth-constraint> 必须使用特殊角色 **,例如:
<auth-constraint>
        <description>special role for all authenticated users</description>
        <role-name>**</role-name>
</auth-constraint>
  • 特殊角色名称 ** 是独立于角色的任何已认证用户的简写。
  • 特殊角色名称 * 是部署描述符中定义的所有角色名称的速记。
当授权约束中出现特殊角色名称 ** 时,它指示任何已认证的用户 (独立于角色) 都有权执行受约束的请求。 特殊角色不需要 web.xml中的其他 <security-role> 声明。

要使用 CICS 事务或资源安全性,应遵循以下步骤:

过程

  1. 为每个 Web 应用程序定义类型为 JVMSERVER 的 URIMAP。 通常,您可以指定 URIMAP 来匹配 Web 应用程序的一般上下文根 (URI),将事务标识限定于组成应用程序的 servlet 集合。 或者,您可以选择在具有更精确 URI 的不同事务下运行每个单独的 servlet。
  2. 授权 Web 应用程序的所有用户使用通过 CICS 事务或资源安全概要文件在 URIMAP 中指定的事务。