![[z/OS]](../images/ngzos.gif)
Java 线程标识和操作系统线程标识
您可以指定选项以使 Java™ 线程标识与操作系统线程标识同步。
Enterprise JavaBeans (EJB) 支持指定方法级 RunAs 角色,该角色用于使 Java Platform, Enterprise Edition (Java EE) 角色与 EJB 方法调用相关联。EJB 方法使用与所指定的安全角色相关联的权限来运行。通过使用用户身份将权限映射至所指定的角色。通常,基于 Web 的运行时和 Java EE 运行时识别此标识,并且此标识与当前分派线程相关联。此标识只管理对那些遵从 Java EE 安全性的资源和设施主体集的访问权。实际的操作系统线程标识不受 EJB RunAs 角色选择的影响,并且通常是服务器的标识。
设置操作系统身份线程将使 Java EE 角色身份与操作系统线程同步 (SyncToOSThread)。这意味着,操作系统线程身份在 EJB 方法调用期间与 Java EE 角色身份相关联(应用程序组装者和部署者通过对特定 Bean 方法将线程身份设置为 RunAs 身份使 RunAs 身份与操作系统线程相关联)。此关联意味着,将调用者或安全角色标识(而不是服务器区域标识)用于 z/OS® 系统服务请求(例如对文件和数据库管理系统的访问)。可以配置 WebSphere® Application Server for z/OS Java EE 服务器以启用或禁用此关联(或同步)。不管已安装应用程序的部署描述符中从操作系统线程标识到运行时标识的设置如何,缺省设置都会禁用修改操作系统线程上标识的能力。如果应用程序安装程序不能启用同步,那么任何将 RunAs 标识设置为操作系统线程的方法都将失败,并发生 no_permission 错误。
要完成指定选项以使 Java 线程标识与操作系统线程标识同步这一工作,请使用资源访问控制工具 (RACF®) 为“允许与操作系统线程同步”定义 FACILITY 以及可选的 SURROGAT 类概要文件。这使 WebSphere Application Server 配置中的 RACF 管理员能够控制用于允许 Java EE 角色标识与 OS 线程同步 (SyncToOSThread) 的许可权。
- 启用 WebSphere Application Server 与 z/OS 线程标识同步
- 指定是否允许应用程序 SynchToOSThread。正如 EJB 和 Web 应用程序 SyncToOSThread 规范指示的那样,选择此安全性选项(即指定为 true)后,将使用应用程序指定的 SyncToOSThread,然后 EJB 和 Web 容器会执行 SyncToOSThread。缺省值为 false,即禁用。
- 启用连接管理器 RunAs 线程身份
- 指定在从指定了 res-auth=container 的资源引用中获取连接时,连接管理器是否使当前 Java EE 主体与操作系统线程同步。缺省值为 false,即禁用。
- True,指定对于对 EJB 或 Web 应用程序调用的所有请求,Java EE 主体或身份应该与操作系统线程同步。
- False,指定对于对 EJB 或 Web 应用程序调用的所有请求,Java EE 主体应用程序或身份不应该与操作系统线程同步。此值是缺省值。
- 本地操作系统
- LDAP
- 定制
- 初始值(当设置第一种方法时)
- 缺省情况下,除非策略属性的“运行方式”字段另有指定,否则 Servlet 服务方法和
EJB 业务方法的调用隐式地作为调用者运行 (RunAsCaller)。EJB 客户机应用程序总是作为服务器 (RunAsServer) 运行。注: 对于 Web 应用程序,如果未指定安全性约束,那么应用程序可能使用未经认证的用户标识来运行。
- 将方法委派更改为 Java EE 标识(指定了 RunAs)
- 从具有容器管理的资源授权 (res-auth=container) 的资源引用获取应用程序时, 连接管理器使当前 Java EE 标识与操作系统线程同步。标有 SynchToOSThread 的 EJB 方法将导致 Java EE 角色标识与操作系统线程同步。
- WSSubject.doAs()
- 此设置提供了当主体集与线程上的远程调用关联时,无需执行 WSSubject.doAs() 将主体集与远程操作关联的灵活性。
- JavaServer Pages (JSP) 编译
- 如果已对服务器启用 SyncToOSThread (security_EnableSyncToOSThread=1),那么 Web 容器 JSP 编译将修改服务器的标识。
- 有状态的后备存储器的访问
- 如果已启用 SyncToOSThread,那么 EJB 容器有状态会话激活将更改服务器的身份。始终使用服务器的身份来访问 EJB 有状态会话后备存储器。
- 重新装入 Web 应用程序
- 当 Web 容器重新装入 Web 应用程序时,如果已对 Web 应用程序启用 SyncToOSThread,那么 Web 容器将更改服务器身份。
- 连接管理器请求
- 当资源引用指定 res-auth=application 时,线程身份将被暂时设置为服务器的身份。