![[z/OS]](../images/ngzos.gif)
Java Platform, Enterprise Edition 身份和操作系统线程身份
为了访问安全环境中的 WebSphere® Application Server 应用程序,使用必须由 WebSphere Application Server 认证的身份来标识用户。
- 用户标识
- Java EE 标识
- 这是由 WebSphere 认证并用于访问控制决策的用户身份,该决策由 WebSphere Application Server 在 Java Platform, Enterprise Edition (Java EE) 运行时进行(例如与 Java EE 应用程序请求相关联并用于 EJB 方法许可权访问控制决策的用户身份)。
- 操作系统身份
- 此用户身份由底层操作系统认证并用于操作系统及其子系统进行的访问控制决策(例如由 SAF STARTED 类设施设置为与 WebSphere Application Server for z/OS® 服务方相关联的用户身份;当服务器尝试访问文件时,文件系统使用此身份来进行访问控制决策)。
- 线程标识
- Java 线程标识
- 当前与 WebSphere Java EE 运行时所管理的 Java 线程相关联的 Java EE 身份(Java 线程是线程的 Java 虚拟机 (JVM) 表示)。Java 线程身份与操作系统线程相关联,但 JVM 在线程的 Java 表示中管理用户身份 - 与操作系统在操作系统线程中管理的用户身份分开。在给定应用程序请求的生存期内,Java EE 标识在 Java 线程中处于活动状态。
- 操作系统线程标识
- 操作系统身份当前与操作系统线程关联。操作系统线程身份通常是对服务方指定的用户身份,并且通常有别于 Java 线程身份。注意,Java EE 维护一个 Java EE 身份,此身份与赋予服务方的操作系统线程身份相对应。此 Java EE 身份可以用作 RunAs 身份。
- RunAs 标识
- 这是对于给定的 Java EE 应用程序请求选作 Java
线程身份的 Java EE 身份(基于在 Java EE 应用程序请求中调用的
Enterprise JavaBeans (EJB) 的 RunAs 部署描述符策略)。Java EE
身份通常是发出 Java EE 应用程序请求的已认证用户的身份。WebSphere Application Server
的 RunAs 策略允许使用三个选项对当前请求指定 Java 线程身份:
- 指定客户机(例如,用户)Java EE 标识 - 也称为选择调用者的 RunAs
- 指定服务器的 Java EE 身份
- 指定所指定角色中的 Java EE 身份
在安全性处于启用状态时,将对每个调用了 Java EE 组件的 WebSphere Application Server for z/OS 请求进行,以确保请求进行访问的用户已得到授权。用户由 Java EE 标识(也称为 JASS 主体集)表示。此 Java EE 身份包含一个或多个主体,并且每个主体与特定的用户身份相对应。此关联由 WebSphere Application Server 管理。因为 Java EE 身份与操作系统 0S 线程身份同名并表示同一用户,所以彼此关联。
WebSphere Application Server for z/OS 在它的其中一个可用服务方进程中分派组件请求。在服务方进程中,组件请求通过 Java 线程进行分派。然后,JVM 以内部方式将 Java 线程映射至 z/OS 线程控制块 (TCB)。TCB 是操作系统线程,并且被认为是本机进程基础结构的组成部分。服务方进程具有它启动时被赋予的操作系统身份。z/OS 安全策略使用 SAF STARTED 类设施来指定身份。
Java EE 授权决策包括使用 Java EE 身份确定的角色授权检查和许可权检查。通过配置设置,可以委派底层操作系统安全管理器(例如系统授权工具 (SAF))执行角色授权检查,在这种情况下,将使用相关联的操作系统 OS 身份进行角色授权决策。
z/OS 上的某些资源管理器使用操作系统线程身份进行授权决策。例如,文件系统访问控制将完全根据访问文件时对 TCB 设置的操作系统线程身份确定。同样,与 DB2® for z/OS 建立的本地 Java 数据库连接 (JDBC) 连接将 TCB 操作系统线程标识用作某些配置下的授权标识。对于使用操作系统线程标识的资源管理器,例如 DB2 for z/OS(与文件系统不同),当应用程序通过 Java 消息服务 (JMS)、JDBC 或由 WebSphere Application Server for z/OS 连接管理进行管理的 Java EE 连接器体系结构 (JCA) 连接器对它们进行访问时,我们认为连接到这些 z/OS 资源管理器的连接器使用操作系统线程安全性。