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 配置 API 中的配置优先。 在 WebSphere 配置 API 中定义登录配置的优点包括:
- 支持使用用户界面来定义 JAAS 登录配置
- 对 JAAS 登录配置进行集中管理
- 在 WebSphere Application Server Network Deployment 产品安装中分发 JAAS 登录配置
由于 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 认证和授权服务" 下,单击 Application logins。
WSLogin 模块定义通常可由应用程序使用的登录配置和 LoginModule 实现。
ClientContainer 模块定义类似于 WSLogin 模块的登录配置和 LoginModule 实现,但强制实施 WebSphere Application Server 客户机容器的需求。
DefaultPrincipalMapping模块定义了一个特殊的LoginModule,通常由 Java 2 Connector 用来将经过验证的WebSphere Application Server用户身份映射到指定后端企业信息系统 (EIS) 的一组用户验证数据(用户 ID 和密码)。 有关 Java 2 Connector 和 "DefaultMappingModule,的更多信息,请参阅 Java 2 安全部分。
可使用管理控制台添加和修改新的 JAAS 登录配置。 更改保存在单元级安全文档中,并且可供所有受管应用程序服务器使用。 要使更改在运行时生效,并且使用客户机容器登录配置可用,需要重新启动应用程序服务器。
WebSphere Application Server 还从根目录的 properties 子目录下的 wsjaas.conf 文件中读取 JAAS 配置信息, WebSphere Application Server 已安装。 对 wsjaas.conf 文件所作的更改通常仅由本地应用程序服务器使用,并且在应用程序服务器重新启动之后生效。 WebSphere Application Server 配置 API 安全性文档中的 JAAS 配置优先于 wsjaas.conf 文件中定义的配置。 wsjaas.conf 中的配置条目将被 WebSphere Application Server 配置 API 安全性文档中具有相同别名的条目覆盖。
管理控制台中的 Java 认证和授权服务 (JAAS) 登录配置条目在创建时 (而不是保存配置时) 将传播到服务器运行时。 但是,已删除的 JAAS 登录配置条目将不会从服务器运行时中移除。 要移除这些条目,保存新配置,然后停止并重新启动服务器。
- Java 2 Platform , Enterprise Edition (J2EE) Java 认证和授权服务 (JAAS)
- JAAS 对于 WebSphere Application Server
- WebSphere Application Server 安全性