在 Liberty 中为应用程序配置授权
为应用程序配置授权是要验证用户或组是否属于指定的角色,以及此角色是否具有访问资源的权限。
关于此任务
Liberty 服务器从用户注册表中抽取用户和组映射信息,然后检查应用程序的授权配置,以确定是否已将用户或组指定给其中一个所需角色。然后,服务器会读取应用程序的部署描述符,以确定用户或组是否具有访问资源的权限。
使用系统授权工具 (SAF) 授权时,会使用 SAF 角色映射器将角色映射到 EJBROLE 资源概要文件。服务器会查询 SAF 以确定用户是否对 EJBROLE 资源概要文件具有所需读访问权。
过程
- 在 server.xml 文件中启用 appSecurity-2.0
Liberty 功能部件。 例如:
<featureManager> <feature>appSecurity-2.0</feature> </featureManager>
注:
- 如果使用的是 SAF 授权提供程序,请包括 zosSecurity-1.0 功能部件,并在 server.xml 文件中定义 safAuthorization 配置元素。例如:
<featureManager> <feature>appSecurity-2.0</feature> <feature>zosSecurity-1.0</feature> </featureManager> <safAuthorization id="saf" />
- 如果使用的是 SAF 授权提供程序,请包括 zosSecurity-1.0 功能部件,并在 server.xml 文件中定义 safAuthorization 配置元素。例如:
- 在 Liberty 服务器上配置用于认证的用户注册表。
请参阅在 Liberty 中认证用户。
如果使用的是 SAF 授权提供程序,那么必须使用 SAF 注册表,而且必须授权服务器使用 SAF 授权服务。请参阅在 z/OS 上激活并配置 SAF 注册表。
- 确保应用程序的部署描述符包含安全性约束及其他安全性相关信息。 注: 您也可以使用 Rational® Application Developer 等工具来创建部署描述符。
- 配置授权信息,例如用户和组到角色的映射。 可以采用下列方式来配置和授权表:
- 如果具有 EAR 文件,那么可以将授权配置定义添加到 ibm-application-bnd.xml 或 ibm-application-bnd.xmi 文件。
- 如果具有独立 WAR 文件,那么可以将授权表定义添加到 server.xml 文件中相应的应用程序元素下。可以使用 WebSphere® Application Server Developer Tools for Eclipse 来执行此操作。
注:- 如果具有 EAR 文件,那么授权配置可能已存在。在已写入当前规范的 EAR 文件中,此信息存储在 ibm-application-bnd.xml 文件中;在较旧的 EAR 文件中,此信息存储在 ibm-application-bnd.xmi 文件中。
- 如果 EAR 文件尚不含 ibm-application-bnd.xm* 文件,那么由于创建该文件的任务不是很直观,您可能更愿意将授权配置添加到 server.xml 文件。
- 如果 EAR 文件的授权配置是在 ibm-application-bnd.xm* 文件中进行定义,并且也在 server.xml 文件中进行定义,那么会将这两个表合并。如果存在任何冲突,那么将使用 server.xml 文件中的信息。
- 如果修改用户注册表,请确保复审授权表以进行必要的更改。例如,如果要指定 access-id 元素并更改注册表的域名,那么也必须在 access-id 元素中更改域名。
- 如果在 server.xml 文件中指定 application-bnd 元素,那么您的应用程序不得位于 dropins 文件夹中。如果您的应用程序保留在 dropins 文件夹中,那么必须通过在 server.xml 文件中设置下列项目来禁用应用程序监视:
<applicationMonitor dropinsEnabled="false" />
可以将角色映射到用户、组或特殊主体集。这两种特殊主体集是 EVERYONE 和 ALL_AUTHENTICATED_USERS。将角色映射到 EVERYONE 特殊主体集时,没有任何安全性,因为每个人都可以访问,而且不会提示您输入凭证。将角色映射到 ALL_AUTHENTICATED_USERS 特殊主体集时,应用程序服务器已认证的任何用户随后都可以访问受保护资源。
下面的代码举例说明了在 server.xml 文件中配置用户和组到角色的映射:<application type="war" id="myapp" name="myapp" location="${server.config.dir}/apps/myapp.war"> <application-bnd> <security-role name="user"> <group name="students" /> </security-role> <security-role name="admin"> <user name="gjones" /> <group name="administrators" /> </security-role> <security-role name="AllAuthenticated"> <special-subject type="ALL_AUTHENTICATED_USERS" /> </security-role> </application-bnd> </application>
在此示例中,admin 角色映射到用户标识 gjones 及组 administrators 中的所有用户。AllAuthenticatedRole 映射到特殊主体集 ALL_AUTHENTICATED_USERS,这表示任何用户只要提供有效的凭证进行认证,就具有访问权。
注: 启用 SAF 授权后,不能使用 ALL_AUTHENTICATED_USERS 和 EVERYONE 特殊主体集。
如果使用的是 SAF 认证,那么会使用 SAF 角色映射器将角色映射到 EJBROLE 资源概要文件。可以在 server.xml 文件中使用 safRoleMapper 元素来配置 SAF 角色映射器模式。请参阅 Liberty:控制将角色映射到 SAF 概要文件的方式。缺省情况下,使用模式 profile_prefix.resource.role 将角色映射到资源概要文件,其中:
- profile_prefix 是使用 safCredentials 配置元素上的 profilePrefix 属性来定义。缺省情况下,profilePrefix 的值为 BBGZDFLT。
- resource 是资源名称;例如应用程序名称。
- role 是角色名称。
注: EJBROLE 资源概要文件区分大小写。以下示例代码显示了用于授权用户的样本 RACF® 命令:rdef EJBROLE BBGZDFLT.myapp.admin uacc(none) permit BBGZDFLT.myapp.admin class(EJBROLE) access(read) id(gjones)
- 可选:配置不存在应用程序绑定信息时的授权决策。 如果未提供受保护应用程序的角色映射绑定信息,那么缺省授权引擎将使用保护资源的角色名称作为与该角色相关联的组名。例如,如果角色名称为 manager,那么用户 manager 组的用户有权访问该资源。这仅当 server.xml 或应用程序绑定文件中没有为应用程序指定任何应用程序绑定信息时才适用:例如,添加此绑定将禁用组绑定的安全角色:
<application type="war" id="myapp" name="myapp" location="${server.config.dir}/apps/myapp.war"> <application-bnd> <security-role name="anyAppRoleName"/> </application-bnd> </application>
注: 要使用用户注册表中组名成功授权,角色名称必须与注册表中此组的已配置全名或唯一名称而不是简短名称匹配。例如,如果组的简短名称为 swGroup,但用户注册表中其全名或唯一名称为 CN=swGroup,o=company,c=us,那么需要将 CN=swGroup,o=company,c=us 指定为角色名称,授权才能成功。
子主题
Liberty:控制将角色映射到 SAF 概要文件的方式
系统授权工具 (SAF) 角色映射器确定如何从应用程序定义的角色名称生成 EJBROLE 概要文件名称。只要对应用程序角色执行 SAF 授权,就会调用映射器。使用 SAF 角色映射器生成的映射概要文件名称,针对底层的 SAF 安全性产品,执行应用程序角色的授权检查。
父主题: 授予对 Liberty 中资源的访问权
相关概念:

文件名:twlp_sec_rolebased.html