Liberty 中配置 RunAs 认证

可通过对 Liberty 配置 RunAs 规范以将认证委派给另一身份。

关于此任务

通过将所指定的用户身份和可选密码映射至 RunAs 角色,可以将认证过程委派给具有 RunAs 角色的用户。

您必须启用 appSecurity-2.0servlet-3.0 Liberty 功能部件,并且具有用户注册表供应用程序用来配置 RunAs 角色。

有关 RunAs 认证的更多信息,请参阅RunAs() 认证

要配置 RunAs 认证,请完成下列步骤:

过程

  1. server.xml 文件中启用 appSecurity-2.0servlet-3.0 Liberty 功能部件。
  2. 为应用程序配置用户注册表
  3. 在应用程序的部署描述符中指定 <run-as> 元素。

    以下 web.xml 文件示例指定要将后续调用委派给映射至 Employee 角色的用户:

         <servlet id="Servlet_1">
              <servlet-name>RunAsServlet</servlet-name>
              <display-name>RunAsServlet</display-name>
              <description>RunAsServlet</description>
              <servlet-class>web.RunAsServlet</servlet-class> 
              <run-as>
                   <role-name>Employee</role-name> 
              </run-as>
          	</servlet>
  4. For distributed platforms将您在前一步骤中指定的角色映射至用户。可以在 ibm-application-bnd.xmi/xmlserver.xml 文件中执行此操作。在 <run-as> 元素中,必须指定用户名。如果使用的是 ibm-application-bnd.xml 文件,那么密码也是必需的;如果使用的是 server.xml 文件,那么密码是可选的。如果需要密码,请在 /bin 目录中使用 securityUtility encode 命令对密码进行编码。有关 securityUtility 命令的更多信息,请参阅 securityUtility 命令

    以下示例使用 server.xml 文件的 <application-bnd> 元素中的 <run-as> 元素,其中,已 Employee 角色已映射至 RunAs 用户 user5

         <application-bnd>
              <security-role name="Employee">
                   <user name="user1" />
                   <user name="user5" />
                   <run-as userid="user5" password="{xor}Lz4sLCgwLTs=" />
              </security-role>
         </application-bnd>   
    注:
    • 因为密码在 server.xml 文件中是可选的,所以您也可以对没有密码的用户使用下列代码:
          <application-bnd>
                <security-role name="Employee">
                     <user name="user1" />
                     <user name="user5" />
                     <run-as userid="user5" />
                 </security-role>
           </application-bnd>   
    • 如果在 server.xml 文件中指定 <application-bnd> 元素,那么您的应用程序不得位于 dropins 文件夹中。如果您让应用程序保留在 dropins 文件夹中,那么必须通过在 server.xml 文件中设置下列项目来禁用应用程序监视:
      <applicationMonitor dropinsEnabled="false" />

    RunAs 用户名必须是唯一的,并且在外部帐户中不存在。例如,如果向 SAML 身份提供者或 OpenID Connect 提供者认证用户,请确保 RunAs 用户名不在这些外部帐户中。

    有关 run-as 元素的更多信息,请参阅 Java Servlets 3.0

  5. For z/OS platforms通过 SAF 资源概要文件配置 RunAs 认证(此认证特定于 z/OS 用户)。
    1. For z/OS platforms通过 SAF 启用 RunAs 授权。
      <safAuthorization enableDelegation="true" />
    2. For z/OS platforms将 RunAs 用户身份分配给应用程序资源和角色。这是通过在对应 SAF 资源概要文件的 APPLDATA 字段中设置 RunAs 用户身份完成的。缺省情况下,给定应用程序和角色的对应 SAF 资源概要文件在 EJBROLE SAF 类中的名称为 {profilePrefix}.{appName}.{roleName}

      这是 Liberty SAF 授权在对该应用程序和角色向用户授权时使用的同一资源概要文件。此概要文件的名称由 safRoleMapper 配置控制。有关将应用程序和角色名称映射至 SAF 概要文件名称的更多信息,请参阅控制将角色映射至 SAF 概要文件的方式

      以下是一些 RACF 命令示例,对于 对于应用程序 myapp 和角色 Employee,这些命令用于将 user5 分配为 RunAs 用户:
      RDEFINE EJBROLE BBGZDFLT.myapp.Employee UACC(READ)
      RALTER EJBROLE BBGZDFLT.myapp.Employee APPLDATA('user5')
      SETROPTS GENERIC(EJBROLE) REFRESH
      SETROPTS RACLIST(EJBROLE) REFRESH

用于指示主题类型的图标 任务主题

文件名:twlp_sec_runas.html