[z/OS]

Java 线程标识和操作系统线程标识

您可以指定选项来同步 Java™ 线程标识和操作系统线程标识。

企业JavaBeans (EJB)支持方法级RunAs角色规范,关联一个Java Platform, Enterprise Edition( Java EE ) 角色并进行 EJB 方法调用。 EJB 方法使用与所指定的安全角色相关联的权限来运行。 通过使用用户身份将权限映射至所指定的角色。 通常情况下,这种身份可以通过网络和Java EE运行时并与当前调度线程相关联。 此身份仅控制对受Java EE安全。 实际的操作系统线程标识不受 EJB RunAs 角色选择的影响,并且通常是服务器的标识。

设置操作系统身份线程同步Java EE角色身份和 OS 线程(SyncToOSThread)。 这意味着操作系统线程标识与Java EE在 EJB 方法调用期间的角色身份(应用程序组装者和部署者将RunAs通过将线程标识设置为RunAs特定 bean 方法的身份)。 这种关联意味着调用者或安全角色身份(而不是服务器区域身份)用于z/OS®系统服务请求,例如访问文件和数据库管理系统。 这WebSphere® Application Server for z/OSJava EE可以配置服务器来启用或禁用这种关联(或同步)。 不管已安装应用程序的部署描述符中从操作系统线程标识到运行时标识的设置如何,缺省设置都会禁用修改操作系统线程上标识的能力。 如果应用程序安装程序不能启用同步,那么任何将 RunAs 标识设置为操作系统线程的方法都将失败,并发生 no_permission 错误。

您可以使用资源访问控制功能 (RACF® ) 定义 FACILITY 以及可选的 SURROGAT 类配置文件以允许同步到 OS 线程。 这给出了RACF管理员WebSphere Application Server配置控制允许同步的权限的能力Java EE角色身份和操作系统线程(SyncToOSThread)。

使用管理控制台,您可以指定以下选项以在z/OS安全选项面板:
使能够WebSphere Application Server和z/OS线程身份同步
指定是否允许应用程序 SynchToOSThread。 正如 EJB 和 Web 应用程序 SyncToOSThread 规范指示的那样,选择此安全性选项(即指定为 true)后,将使用应用程序指定的 SyncToOSThread,然后 EJB 和 Web 容器会执行 SyncToOSThread。 缺省值为 false,即禁用。
启用连接管理器 RunAs 线程标识
指定连接管理器是否同步当前Java EE当从指定资源引用获取连接时,操作系统线程的主体res-auth=容器。 缺省值为 false,即禁用。
您还可以选择SyncToOSThread通过使用方法级扩展部署描述符 (XDD) 为企业提供支持JavaBeans (EJB)。 使用通过 EJB 或 Web 应用程序标准部署描述符定义的特有环境条目来启用此支持。 在组装或部署期间,通过指定以下内容将值与该变量绑定:
  • 真的,它指定Java EE对于在 EJB 或 Web 应用程序上调用的所有请求,主体或身份都应该同步到 OS 线程。
  • 错误的,指定Java EE对于在 EJB 或 Web 应用程序上调用的所有请求,主体应用程序或身份不应同步到 OS 线程。 此值是缺省值。
处理请求时,Web 容器了解需要什么角色(如果有的话)来访问由输入 URL 表示的组件。 该容器将验证请求者认证以及已经为已认证的用户授予了所需角色的许可权。 Web 容器使用与 EJB 容器相同的基于系统授权工具 (SAF) 的用户注册表和 EJB 角色概要文件来执行此验证。 因此,您可以使用与管理 Enterprise Bean 相同的用户注册表和角色配置文件来管理 Web 应用程序,并且Java EE服务。 对于设置线程标识,可能的活动用户注册表包括:
  • 本地操作系统
  • LDAP
  • 定制
修改线程标识值的应用程序事件包括:
初始值(当设置第一种方法时)
缺省情况下,除非策略属性的“运行方式”字段另有指定,否则 Servlet 服务方法和 EJB 业务方法的调用隐式地作为调用者运行 (RunAsCaller)。 EJB 客户机应用程序总是作为服务器 (RunAsServer) 运行。
笔记:对于 Web 应用程序,如果未指定安全约束,则应用程序可能会使用未经身份验证的用户 ID 运行。
方法委托更改为Java EE身份 (RunAs指定的)
连接管理器同步当前Java EE从具有容器管理资源授权的资源引用获取应用程序时,使用操作系统线程进行身份识别( res-auth=容器)。 EJB 方法标有SynchToOSThread导致Java EE角色身份同步到OS线程。
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 时,线程身份将被暂时设置为服务器的身份。
笔记:当运行时行政安全启用后,建议您启用 Java 2 安全性。 启用此支持时请务必小心,因为可能会导致一般z/OS系统资源(如文件和套接字)不受控制WebSphere Application Server运行时和这些系统资源管理可供通过以下方式建立的身份访问Java EE应用程序。