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)。
- 使能够WebSphere Application Server和z/OS线程身份同步
- 指定是否允许应用程序 SynchToOSThread。 正如 EJB 和 Web 应用程序 SyncToOSThread 规范指示的那样,选择此安全性选项(即指定为 true)后,将使用应用程序指定的 SyncToOSThread,然后 EJB 和 Web 容器会执行 SyncToOSThread。 缺省值为 false,即禁用。
- 启用连接管理器 RunAs 线程标识
- 指定连接管理器是否同步当前Java EE当从指定资源引用获取连接时,操作系统线程的主体res-auth=容器。 缺省值为 false,即禁用。
- 真的,它指定Java EE对于在 EJB 或 Web 应用程序上调用的所有请求,主体或身份都应该同步到 OS 线程。
- 错误的,指定Java EE对于在 EJB 或 Web 应用程序上调用的所有请求,主体应用程序或身份不应同步到 OS 线程。 此值是缺省值。
- 本地操作系统
- 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 时,线程身份将被暂时设置为服务器的身份。