为 Java 认证和授权服务配置程序化登录

可使用管理控制台添加和修改新的 JAAS 登录配置。更改保存在单元级安全文档中,并且可供所有受管应用程序服务器使用。

开始之前

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 Platform, Enterprise Edition (Java EE) 资源。
  • 您可以在管理控制台中配置 JAAS 登录并将此登录配置存储在应用程序服务器配置中。但是,WebSphere Application Server 仍支持由 JAAS 缺省实现提供的缺省 JAAS 登录配置格式(纯文本文件)。如果在 WebSphere Application Server 配置 API 和纯文本文件格式中定义了重复的登录配置,那么优先使用在 WebSphere Application Server 中定义的登录配置。在 WebSphere 配置 API 中定义登录配置的优点包括:
    • 支持使用用户界面来定义 JAAS 登录配置
    • 对 JAAS 登录配置进行集中管理
    • 在安装期间分布 JAAS 登录配置
    由于 JAAS V1.0 中的设计疏忽,javax.security.auth.Subject.getSubject 方法在 java.security.AccessController.doPrivileged 代码块中不返回与正在运行的线程相关联的主体集。此问题表示存在不一致情况,这可能会引起不良结果。com.ibm.websphere.security.auth.WSSubject API 提供了使主体集与正在运行的线程相关联的变通方法。
  • 代理 LoginModule。代理 LoginModule 装入实际的 LoginModule 模块。缺省 JAAS 实现不使用线程上下文类装入器来装入类。如果 LoginModule 类文件不在应用程序类装入器或 Java 扩展类装入器类路径中,那么无法装入 LoginModule 模块。由于这个类装入器可视性问题,WebSphere Application Server 提供了代理 LoginModule 模块,以使用线程上下文类装入器来装入 JAAS LoginModule。不需要将 LoginModule 实现放入应用程序类装入器或者放入具有此代理 LoginModule 模块的 Java 扩展类装入器的类路径中。

    [AIX Solaris HP-UX Linux Windows]如果您不想使用代理 LoginModule 模块,那么可以将 LoginModule 模块放在 app_server_root/lib/ext/ 目录中。但是,由于安全风险问题,建议您不要这样做。

    [z/OS]如果您不想使用代理 LoginModule 模块,那么可以将 LoginModule 模块放在 WAS_HOME/lib/ext/ 目录中。但是,由于安全风险问题,建议您不要这样做。

    [IBM i]如果您不想使用代理 LoginModule 模块,那么可将 LoginModule 模块放入 /QIBM/UserData/Java400/ext/ 目录中,以将其添加到 Java 扩展目录的类路径中。并且,将 *PUBLIC *RX 权限授予该文件。但是,在将该文件添加到 /QIBM/UserData/Java400/ext/ 目录时,还会将该文件添加到 Java 扩展目录的缺省类路径中,该路径可供整个操作系统访问。

JAAS 登录配置是在 WebSphere Application Server 配置应用程序编程接口 (API) 安全性文档中定义的。单击安全性 > 全局安全性。在“Java 认证和授权服务”下,单击应用程序登录。提供了下列 JAAS 登录配置:

ClientContainer
定义登录配置和 LoginModule 实现,这类似于 WSLogin 配置,但对 WebSphere Application Server 客户机容器有一些要求。有关更多信息,请参阅Java 认证和授权服务的配置条目设置
DefaultPrincipalMapping
定义特殊的 LoginModule 模块,通常,Java EE 连接器使用该模块将已认证的 WebSphere Application Server 用户标识映射到所指定后端企业信息系统 (EIS) 的一组用户认证数据(用户标识和密码)。有关 Java EE 连接器和 DefaultMappingModule 模块的更多信息,请参阅 Java EE 安全性部分。
WSLogin
定义通常可供应用程序使用的登录配置和 LoginModule 实现。

可使用管理控制台添加和修改新的 JAAS 登录配置。更改保存在单元级安全文档中,并且可供所有受管应用程序服务器使用。要使更改在运行时生效,需要重新启动应用程序服务器。

注意: 不要除去或删除预定义的 JAAS 登录配置(例如 ClientContainer、WSLogin 和 DefaultPrincipalMapping)。删除或除去它们会导致其他企业应用程序失败。

过程

  1. 删除 JAAS 登录配置。
    1. 单击安全性 > 全局安全性
    2. 在“Java 认证和授权服务”下,单击应用程序登录 这就显示了“应用程序登录配置”面板。
    3. 选中要删除的登录配置的复选框,然后单击删除
  2. 创建新的 JAAS 登录配置。
    1. 单击安全性 > 全局安全性
    2. 在“Java 认证和授权服务”下,单击应用程序登录
    3. 单击新建 这就显示了“应用程序登录配置”面板。
    4. 指定新 JAAS 登录配置的别名,然后单击应用 此值就是在 javax.security.auth.login.LoginContext 实现(用于创建新的 LoginContext 上下文)中传递的登录配置名称。

      单击应用以保存更改并添加优先于原始别名的附加节点名。单击确定并不会将新的更改保存在 security.xml 文件中。

    5. 在“其他属性”下,单击 JAAS 登录模块
    6. 单击新建
    7. 指定模块类名。 由于类装入器可视性的限制,所以,请指定 WebSphere Application Server 代理 LoginModule 模块。
    8. 指定 LoginModule 实现作为代理 LoginModule 模块的代表属性。 WebSphere Application Server 代理 LoginModule 类名为 com.ibm.ws.security.common.auth.module.proxy.WSLoginModuleProxy。
    9. 从列表中选择认证策略,然后单击应用
    10. 在“其他属性”下,单击定制属性 这就显示了所选 LoginModule 的“定制属性”面板。
    11. 创建名为 delegate 并且值为实际 LoginModule 实现的新属性。 可以指定其他属性,例如值为 true 的 debug。这些属性将作为 LoginModule 实例的 initialize 方法的选项传递给 LoginModule 类。
    12. 单击保存

      对于 WebSphere Application Server Network Deployment 安装,确保执行文件同步操作,以将更改传播到其他节点。

    可以将 JAAS 登录模块放到 WebSphere Application Server 目录结构中的若干个位置中。以下列表按建议顺序提供了 JAAS 登录模块的位置:
    • 特定 Java Platform, Enterprise Edition (Java EE) 应用程序的企业归档 (EAR) 文件。

      如果将登录模块放在 EAR 文件中,那么该登录模块只能由特定应用程序访问。

    • WebSphere Application Server 共享库。

      如果将登录模块放在共享库中,那么必须指定可访问该模块的应用程序。有关共享库的更多信息,请参阅“管理共享库”一文。

    • 在 Java 扩展目录中。

      如果将 JAAS 登录模块放入 Java 扩展目录中,那么该登录模块可供所有应用程序使用。

      [z/OS]对于 WebSphere Application Server for z/OS® 或 WebSphere Business Integration Server Foundation,建议不要使用此位置。

      [IBM i]将类文件放在 /QIBM/UserData/Java400/ext 目录中以将其添加至 Java 扩展目录的类路径。并且,将 *PUBLIC *RX 权限授予该文件。但是,将该文件添加至 /QIBM/UserData/Java400/ext 目录时,会将该文件添加到 Java 扩展目录的缺省类路径,该路径可供整个操作系统访问

    虽然 Java 扩展目录为登录模块提供了最大程度的可用性,但是请将登录模块放入应用程序 EAR 文件中。如果其他应用程序需要访问同一个登录模块,那么考虑使用共享库。

  3. 更改明文文本文件。

    [AIX Solaris HP-UX Linux Windows][z/OS]WebSphere Application Server 支持由 JAAS 缺省实现提供的缺省 JAAS 登录配置格式,即纯文本文件。但是,未提供用于编辑此格式纯文本文件的工具。可以在纯文本文件(app_server_root/properties/wsjaas.conf) 中定义 JAAS 登录配置。任何语法错误都会导致不正确地解析纯文本 JAAS 登录配置文件。此问题可能会导致其他应用程序失败。

    [IBM i]WebSphere Application Server 支持由 JAAS 缺省实现提供的缺省 JAAS 登录配置格式,即纯文本文件。但是,未提供用于编辑此格式纯文本文件的工具。可以在 profile_root/properties/wsjaas.conf 文件中定义 JAAS 登录配置。任何语法错误都会导致不正确地解析纯文本 JAAS 登录配置文件。此问题可能会导致其他应用程序失败。

    [AIX Solaris HP-UX Linux Windows][z/OS]必须在指定了 JAAS 配置文件的情况下调用使用 Java 认证和授权服务 (JAAS) 来进行认证的 Java 客户机程序。此配置文件是在 app_server_root/bin/launchClient.bat 文件中设置的,如下所示:
    set JAAS_LOGIN_CONFIG=-Djava.security.auth.login.config=%install_root%\properties\wsjaas_client.conf
    如果未使用 launchClient.bat 文件来调用 Java 客户机程序,请验证是否使用 -Djava.security.auth.login.config 标志将相应的 JAAS 配置文件传递给了 Java 虚拟机。

    [IBM i]必须在指定了 JAAS 配置文件的情况下调用使用 JAAS 来进行认证的 Java 客户机程序。此配置文件在 launchClient QShell 脚本中设置。如果未使用 launchClient 脚本来调用 Java 客户机程序,请验证是否使用 -Djava.security.auth.login.config 标志将相应的 JAAS 配置文件传递给了 Java 虚拟机。

结果

创建了新的 JAAS 登录配置,或者除去了旧的 JAAS 登录配置。企业应用程序可使用新创建的 JAAS 登录配置,而不必重新启动应用程序服务器进程。

[AIX Solaris HP-UX Linux Windows][z/OS]但是,app_server_root/properties/wsjaas.conf 文件中定义的新 JAAS 登录配置不会自动刷新。重新启动应用程序服务器以验证更改。这些 JAAS 登录配置特定于特定的节点,不可供其他节点上运行的其他应用程序服务器使用。

[IBM i]但是,不会自动刷新 profile_root/properties/wsjaas.conf 文件中定义的新 JAAS 登录配置。重新启动应用程序服务器以验证更改。这些 JAAS 登录配置特定于特定的节点,不可供其他节点上运行的其他应用程序服务器使用。

下一步做什么

创建新的 JAAS 登录配置,企业应用程序将使用这些登录配置来执行定制认证。使用这些新定义的 JAAS 登录配置来执行程序化登录。

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_j2clogin
文件名:tsec_j2clogin.html