选择注册表或存储库

用户注册表中包含的用户信息和组信息。 在 WebSphere® Application Server中,用户注册表对用户进行认证,并检索有关用户和组的信息以执行与安全性相关的功能,包括认证和授权。

准备工作

注: 在创建概要文件期间,无论是在安装期间还是在安装后,缺省情况下都会启用管理安全性。 基于文件的联合用户资源库被配置为活动用户注册表。 确定是否需要不同的用户注册表。

在配置用户注册表或存储库之前,请确定要使用的用户注册表或存储库。 可以为单元配置一个活动缺省注册表。

有关此任务

WebSphere Application Server 提供了支持多种类型的注册表和存储库的实现,包括本地操作系统注册表,独立轻量级目录访问协议 (LDAP) 注册表,独立定制注册表和联合存储库。

通过 WebSphere Application Server,用户注册表或存储库 (例如联合存储库) 对用户进行认证,并检索有关用户和组的信息,以执行与安全性相关的功能 (包括认证和授权)。

通过 WebSphere Application Server,用户注册表或存储库用于:
  • 使用基本认证、身份断言或客户机证书来认证用户
  • 检索有关用户和组的信息以执行与安全性相关的管理功能,例如,将用户和组映射至安全角色

[z/OS]WebSphere Application Server 设计为能够支持多个基于操作系统或操作环境的用户注册表,例如 z/OS® SAF 注册表以及大多数基于轻量级目录访问协议 (LDAP) 的主要注册表。 通过设置正确的配置信息(例如用户和组过滤器),可以使用定制 LDAP 功能来支持任何 LDAP 服务器。 但是,支持未扩展到这些定制 LDAP 服务器,这是因为有很多无法测试的可能性。

[z/OS]配置正确的注册表或存储库是给用户和组指定应用程序角色的先决条件。 缺省情况下,未配置用户注册表或存储库时,将使用基于 SAF 的本地操作系统用户注册表。 如果您选择的用户注册表或存储库不是本地操作系统用户注册表或存储库,那么必须先配置用户注册表或存储库。 通常,配置用户注册表或存储库的工作是在以下过程中完成的:启用管理安全性,重新启动服务器,然后给用户和组指定所有应用程序的角色。

除了本地操作系统, LDAP 和联合存储库注册表外, WebSphere Application Server 还提供了一个插件,用于通过使用定制注册表功能来支持任何注册表。 定制注册表功能使您能够配置无法通过 WebSphere Application Server的安全性配置面板提供的任何用户注册表。

配置正确的注册表或存储库是给用户和组指定应用程序角色的先决条件。 在未配置用户注册表或资源库的情况下,缺省情况下将使用本地操作系统注册表。 如果您选择的用户注册表不是本地操作系统注册表,那么首先需要配置该注册表或存储库(这通常是在以下过程中完成的:启用全局安全性,重新启动服务器,然后给用户和组指定所有应用程序的角色)。

WebSphere Application Server 支持以下类型的用户注册表:
  • 联合存储库
  • 本地操作系统 [z/OS],例如基于 SAF 的
    限制: 不支持在本地操作系统注册表下配置透明 LDAP 服务器并通过该本地操作系统使用 LDAP 进行用户认证。
  • 独立轻量级目录访问协议 (LDAP) 注册表
  • 独立定制注册表
UserRegistry 接口既用于实现用户帐户存储库的定制注册表选项也用于实现联合存储库选项。 在当前用户和组信息以某些其他格式(例如数据库)存在并且无法移到本地操作系统或 LDAP 注册表的情况下,此接口非常有帮助。 在这种情况下,您可以实现 UserRegistry 接口,以便 WebSphere Application Server 可以将现有注册表用于所有与安全性相关的操作。 实现定制注册表的过程是软件实现工作,预期实现不依赖于 WebSphere Application Server 资源管理来执行其操作。 例如,不能使用应用程序服务器数据源配置;通常,必须直接在您的代码中调用数据库连接并指定这些连接的行为。
注: WebSphere Application Server 已使用 UserRegistry 接口实现用户注册表代理。 但是,返回值与接口稍有不同。 例如,getUniqueUserId 返回的是包含了域名的唯一标识。 不能将该返回值传递至 getUserSecurityName,如以下示例中所示:
// Retrieves the default InitialContext for this server.
javax.naming.InitialContext ctx = new javax.naming.InitialContext();

// Retrieves the local UserRegistry object.
com.ibm.websphere.security.UserRegistry reg =
         (com.ibm.websphere.security.UserRegistry) ctx.lookup("UserRegistry");

// Retrieves the registry uniqueID based on the userName that is specified
     // in the NameCallback.
String uniqueid = reg.getUniqueUserId(userName);
// Strip the realm name and get real uniqueID
String uid = com.ibm.wsspi.security.token.WSSecurityPropagationHelper.getUserFromUniqueID (uniqueID);

// Retrieves the security name from the user registry based on the uniqueID.
String securityName = reg.getUserSecurityName(uid);
可以将服务提供程序接口 (SPI) 用于此解析函数。
在为应用程序指定用户和组后,如果需要更改用户注册表,请从应用程序中删除所有用户和组(包括任何 RunAs 角色),然后在更改注册表后通过管理控制台或通过 wsadmin 脚本编制功能重新指定。 以下 wsadmin 命令(它使用 Jacl)从任何应用程序中除去所有用户和组:
$AdminApp deleteUserAndGroupEntries yourAppName
其中 yourAppName 是应用程序的名称。 在执行此操作前,建议您备份旧应用程序。 但是,如果下列两个条件都成立,那么可能能够在不删除用户和组信息的情况下切换注册表:
  • 所有应用程序中的所有用户和组名(包括 RunAs 角色用户的密码)在两个用户注册表中都匹配。
  • 应用程序绑定文件未包含对每个用户注册表唯一的访问标识,即使对于同一用户名或组名亦如此。

缺省情况下,应用程序的绑定文件不包含访问标识。 这些标识是在应用程序启动时生成的。 但是,如果从前发行版迁移现有应用程序,或者已使用 wsadmin 脚本来为应用程序添加访问标识以提高性能,那么必须除去现有用户和组信息,并在配置新用户注册表后添加那些信息。

要了解有关更新访问标识的更多信息,请参阅“AdminApp 对象的命令”一文中的 updateAccess 标识。

注意: WebSphere Application Server 支持不同操作系统上的各种用户注册表和存储库。 在用户认证过程期间,可以在用户名或密码中使用非字母数字字符。 非字母数字字符的使用限制取决于底层操作系统和用户注册表类型。 有关不支持的非字母数字字符的更多信息,请参阅操作系统和用户注册表或存储库文档。
[AIX]例如,在用户名值中不支持下列字符:
  • ˋ
  • #
  • =
  • \
  • :
  • "
  • ,
  • /
  • ?
  • '
  • 空白字符

有关不支持的非字母数字字符的完整列表,请参阅 IBM AIX 操作系统文档。

[HP-UX]例如,在用户名值中不支持下列字符:
  • ˋ
  • :
  • "
  • /
  • 空白字符

完成下列某个步骤以配置用户注册表:

过程

下一步做什么?

  1. 如果您正在启用安全性,请确保完成余下的步骤。 验证是否已将“全局安全性”面板上的用户帐户存储库设置为适当的注册表或存储库。 作为最后一个步骤,通过在“全局安全性”面板中单击应用来验证用户标识和密码。 保存,停止并启动所有 WebSphere Application Server
  2. 为了使用户注册表面板中的任何更改生效,必须通过在“全局安全性”面板上单击应用来验证这些更改。 验证后,保存配置并停止和启动所有 IBM MQ 链路,包括单元,节点和所有应用程序服务器。 为了避免 WebSphere Application Server 进程之间的不一致,请确保在所有进程都在运行时对注册表或存储库进行任何更改。 如果任何进程处于关闭状态,那么需要强制执行同步以确保该进程以后能够启动。

    如果启动服务器时未发生任何问题,那么表示设置正确。

  3. [z/OS]如果选择通过本地操作系统的系统授权工具 (SAF) 作为注册表或存储库,那么将忽略绑定文件中的值,但 RunAs 角色用户的用户标识和密码 (或密码短语) 除外。