Java 认证和授权服务的登录配置
Java™ 认证和授权服务 (JAAS) 是 WebSphere® Application Server 中的一项新功能。JAAS 是用于执行认证的 WebSphere Application Server 策略应用程序编程接口 (API),它取代了公共对象请求代理体系结构 (CORBA) 程序化登录 API。
WebSphere Application Server 提供了一些对 JAAS 的扩展:
- com.ibm.websphere.security.auth.WSSubject:com.ibm.websphere.security.auth.WSSubject API 将 JAAS 授权模型扩展到
Java 2 Platform, Enterprise Edition (J2EE) 资源。您可以通过管理控制台或使用脚本编制功能来配置
JAAS 登录,并将此配置存储在 WebSphere Application Server 配置 API 中。但是,WebSphere Application Server 仍支持由 JAAS 缺省实现提供的缺省
JAAS 登录配置格式(纯文本文件)。如果在 WebSphere Application Server 配置 API 和纯文本文件格式中定义了重复的登录配置,那么优先使用在 WebSphere Application Server 中定义的登录配置。在 WebSphere 配置 API 中定义登录配置的优点包括:
- 支持使用用户界面来定义 JAAS 登录配置
- 对 JAAS 登录配置进行集中管理
- JAAS 登录配置分布在 WebSphere Application Server Network Deployment 产品安装中
由于 JAAS 1.0 中的设计疏忽,javax.security.auth.Subject.getSubject 方法在 java.security.AccessController.doPrivileged 代码块中不返回与正在运行的线程相关联的主体集。此操作可能呈现出存在问题的不一致行为。com.ibm.websphere.security.auth.WSSubject 扩展提供将主体集与正在运行的线程关联的变通方法。com.ibm.websphere.security.auth.WSSubject 将 JAAS 授权模型扩展至 J2EE 资源。
WebSphere Application Server 使用自已的主体集类的原因:您可以使用 Subject.getSubject 调用来检索 Subject.doAs 块中的主体集。但是,如果 Subject.doAs 块中包含 AccessController.doPrivileged 调用,那么此过程不起作用。在以下示例中,s1 等于 s,但是 s2 是 null:* AccessController.doPrivileged() not only truncates the Subject propagation, * but also reduces the permissions. It does not include the JAAS security * policy defined for the principals in the Subject. Subject.doAs(s, new PrivilegedAction() { public Object run() { System.out.println("Within Subject.doAsPrivileged()"); Subject s1 = Subject.getSubject(AccessController.getContext()); AccessController.doPrivileged(new PrivilegedAction() { public Object run() { Subject s2 = Subject.getSubject(AccessController.getContext()); return null; } }); return null; } });
- 您可以通过管理控制台或使用脚本编制功能来配置 JAAS 登录配置,并将其存储在 WebSphere Application Server
配置库中。应用程序可以在管理控制台中定义新的 JAAS 登录配置并将数据持久保存在配置库中,该配置库存储在
WebSphere Application Server 配置 API 中。但是,WebSphere Application Server 仍支持由 JAAS 缺省实现提供的缺省 JAAS 登录配置格式。如果在 WebSphere Application Server 配置 API 和纯文本文件格式中定义了重复的登录配置,那么优先使用 WebSphere Application Server 配置 API 中的登录配置。在 WebSphere Application Server 配置 API 中定义登录配置的优点包括:
- 在定义 JAAS 登录配置时的 UI 支持。
- JAAS 配置登录配置可以集中管理。
- JAAS 配置登录配置分布在 WebSphere Application Server Network Deployment 安装中。
- 代理 LoginModule:Proxy.LoginModule 是用于已配置的用户模块或系统定义模块的代理,上下文类装入器(而不是系统类装入器)使用此代理来装入该模块。缺省 JAAS 实现不使用线程上下文类装入器来装入类。如果 LoginModule 类文件不在应用程序类装入器或 Java 扩展类装入器类路径中,那么无法装入 LoginModule 模块。WebSphere Application Server 提供了代理 LoginModule 模块,以使用线程上下文类装入器来装入 JAAS LoginModule。不需要将 LoginModule 实现置于应用程序类装入器或带有此代理 LoginModule 模块的 Java 扩展类装入器的类路径上。
系统管理员确定用于每个应用程序的认证技术或登录模块,并在登录配置中配置它们。配置信息源(例如,文件或数据库)取决于当前的 javax.security.auth.login.Configuration 实现。WebSphere Application Server 实现允许同时在 WebSphere Application Server 配置 API 安全性文档以及 JAAS 配置文件中定义登录配置,并且优先使用前者中的配置。
- 单击 。
- 在“Java 认证和授权服务”下,单击应用程序登录。
WSLogin 模块定义通常可由应用程序使用的登录配置和 LoginModule 实现。
ClientContainer 模块定义了登录配置以及类似于 WSLogin 模块的 LoginModule 实现,但强制实施 WebSphere Application Server 客户机容器的要求。
DefaultPrincipalMapping 模块定义了一个特殊的 LoginModule,后者通常由 Java 2 连接器用来将经过认证的 WebSphere Application Server 用户身份映射到指定后端企业信息系统 (EIS) 的一组用户认证数据(用户标识和密码)。有关 Java 2 连接器和 DefaultMappingModule 的更多信息,请参阅“Java 2 安全性”一节。
可使用管理控制台添加和修改新的 JAAS 登录配置。更改保存在单元级安全文档中,并且可供所有受管应用程序服务器使用。要使更改在运行时生效,并且使用客户机容器登录配置可用,需要重新启动应用程序服务器。
WebSphere Application Server 还从 WebSphere Application Server 安装根目录中的 properties 子目录下的 wsjaas.conf 文件中读取 JASS 配置信息。对 wsjaas.conf 文件所作的更改通常仅由本地应用程序服务器使用,并且在应用程序服务器重新启动之后生效。WebSphere Application Server 配置 API 安全性文档中的 JAAS 配置优先于 wsjaas.conf 文件中定义的配置。WebSphere Application Server 配置 API 安全性文档中的配置条目将覆盖 wsjaas.conf 中别名相同的条目。
管理控制台中的 Java 认证和授权服务 (JAAS) 登录配置条目将在创建时(而不是在保存配置时)传播至服务器运行时。但是,已删除的 JAAS 登录配置条目将不会从服务器运行时中移除。要移除这些条目,保存新配置,然后停止并重新启动服务器。
- Java 2 Platform, Enterprise Edition (J2EE) Java 认证和授权服务 (JAAS)
- JAAS for WebSphere Application Server
- WebSphere Application Serversecurity