Sun Java System Message Queue 3.7 UR1 管理指南

用户验证

当用户尝试连接到代理时,代理将通过检查所提供的名称和密码来对用户进行验证。如果名称和密码与特定于代理的(每个代理均配置为需要查阅)用户系统信息库中的名称和密码相匹配,则允许该用户与代理建立连接。

您负责维护系统信息库中用户、用户组及用户密码的列表。各个代理实例可以使用不同的用户系统信息库。本节将说明如何创建、填充和管理系统信息库。

系统信息库可以是以下类型之一:

使用平面文件用户系统信息库

Message Queue 提供了一个平面文件用户系统信息库和一个命令行工具,即用户管理器实用程序 (imqusermgr),您可以使用它来填充和管理平面文件用户系统信息库。以下各节介绍平面文件用户系统信息库以及如何使用用户管理器实用程序来填充和管理该系统信息库。

创建用户系统信息库

平面文件用户系统信息库是特定于实例的。默认的用户系统信息库(名为 passwd)是为启动的每个代理实例自动创建的。此用户系统信息库所在的目录由与该系统信息库相关联的代理实例的名称标识(请参见附录 A, Message QueueTM 数据在特定平台上的位置):

   …/instances/instanceName/etc/passwd

创建的系统信息库具有两个条目。表 7–1 中的每一行显示一个条目。

表 7–1 用户系统信息库中的初始条目

用户名 

密码 

组 

状态 

admin

admin

admin

处于活动状态

guest

guest

anonymous

处于活动状态

这些初始条目使 Message Queue 代理安装后即可使用,不需要管理员的干预:

以下各节说明如何填充和管理平面文件用户系统信息库。

用户管理器实用程序

使用 Message Queue 用户管理器实用程序 (imqusermgr),您可以编辑或填充平面文件用户系统信息库。本节介绍了用户管理器实用程序。下文说明如何使用 imqusermgr 子命令完成特定任务。

有关 imqusermgr 命令的完整参考信息,请参见第 13 章,命令行参考

使用用户管理器之前,请谨记以下事项:


注 –

以下各节中的示例采用默认代理实例。


子命令

imqusermgr 命令包含子命令 adddeletelistupdate

命令选项

表 7–2 列出了 imqusermgr 命令的选项。

表 7–2 imqusermgr 选项

选项 

描述 

-a activeState

指定用户是否处于活动状态 (true/false)。true 表示处于活动状态。这是默认值。

-f

执行操作,无需用户确认。 

-h

显示用法帮助。不执行命令行上的其他选项。 

-i instanceName

指定命令要应用到的代理实例名。如果未指定,则采用默认实例名 imqbroker

-p passwd

指定用户密码。 

-g group

指定用户组。有效值包括 adminuseranonymous

-s

设置无提示模式。 

-u userName

指定用户名。 

-v

显示版本信息。不执行命令行上的其他选项。 

在代理实例的用户系统信息库中添加用户条目时,可以指定以下三个预定义组之一: adminuseranonymous。如果不指定任何组,则默认属于 user 组。应按如下方式指定组:

要更改用户所属的组,必须删除该用户的条目,然后为该用户添加另一个条目并为其指定新组。

您不能重命名或删除这些系统创建的组,也不能创建新组。但是,您可以指定访问规则,以定义该组的成员可以执行的操作。有关详细信息,请参见用户授权:访问控制属性文件

用户状态

向系统信息库中添加用户时,用户的默认状态是活动的。要使用户处于非活动状态,您必须使用 update 命令。例如,以下命令将使用户 JoeD 处于非活动状态:

imqusermgr update -u JoeD -a false

处于非活动状态的用户条目将保留在系统信息库中,但不能打开新连接。当某个用户处于非活动状态时,如果您试图添加具有相同名称的另一个用户,操作将失败。必须删除处于非活动状态的用户条目,或者更改新用户的名称,或者为新用户指定一个不同的名称。这样可以防止添加重复的用户名。

用户名和密码的格式

用户名和密码必须遵循以下原则:

填充和管理用户系统信息库

要在系统信息库中添加用户,可以使用 add 子命令。例如,以下命令向默认代理实例用户系统信息库添加用户名为 Katharine、密码为 sesame 的用户。

imqusermgr add -u Katharine -p sesame -g user

要从系统信息库中删除用户,可以使用 delete 子命令。例如,以下命令删除用户 Bob

imqusermgr delete -u Bob

要更改用户的密码或状态,可以使用 update 子命令。例如,以下命令将 Katharine 的密码更改为 aladdin

imqusermgr update -u Katharine -p aladdin

要列出一个或所有用户的相关信息,可以使用 list 命令。以下命令显示名为 isa 的用户的相关信息:

imqusermgr list -u isa

% imqusermgr list -u isa

User repository for broker instance: imqbroker
----------------------------------
User Name    Group    Active State
----------------------------------
isa          admin    true

以下命令列出所有用户的相关信息:

imqusermgr list

% imqusermgr list

User repository for broker instance: imqbroker
--------------------------------------
User Name    Group        Active State
--------------------------------------
admin        admin        true
guest        anonymous    true
isa          admin        true
testuser1    user         true
testuser2    user         true
testuser3    user         true
testuser4    user         false
testuser5    user         false

更改默认的管理员密码

为安全起见,应该将 admin 的默认密码更改为只有您自己知道的密码。以下命令将 mybroker 代理实例的默认管理员密码 admin 更改为 grandpoobah

imqusermgr update mybroker -u admin -p grandpoobah

要快速确认此更改是否已生效,可以在代理实例运行时运行任何命令行工具。例如,以下命令将提示您输入密码:

imqcmd list svc mybroker -u admin

输入新密码 (grandpoobah) 将会被接受;而输入旧密码则会失败。

更改密码后,使用任何 Message Queue 管理工具(包含管理控制台)时都应该提供新密码。

使用 LDAP 服务器管理用户系统信息库

要使用 LDAP 服务器来管理用户系统信息库,请执行以下任务:

编辑实例配置文件

要让代理使用目录服务器,请设置代理实例配置文件 config.properties 中某些属性的值。设置这些属性后,每当用户试图连接到代理实例或执行消息传送操作时,代理实例都会在 LDAP 服务器中查询有关用户和组的信息。

实例配置文件位于代理实例目录下的某个目录中。路径的格式如下:

/instances/instanceName

/props/config.properties

有关实例目录在特定操作系统中的位置的信息,请参见附录 A, Message QueueTM 数据在特定平台上的位置

Procedure编辑配置文件以使用 LDAP 服务器

  1. 通过设置以下属性,指定您使用的是 LDAP 用户系统信息库:


    imq.authentication.basic.user_repository=ldap
  2. 设置 imq.authentication.type 属性,确定密码是以 Base64 (basic) 还是 MD5 (digest) 编码的形式从客户端传递给代理。使用 LDAP 目录服务器管理用户系统信息库时,必须将验证类型设置为 basic。例如,


    imq.authentication.type=basic
  3. 还必须设置控制 LDAP 访问的代理属性。这些属性存储在代理的实例配置文件中。安全服务对这些属性进行了讨论,安全属性对这些属性进行了总结。

    Message Queue 使用 JNDI API 与 LDAP 目录服务器进行通信。有关这些属性的语法及其所引用的术语的详细信息,请查阅 JNDI 文档。Message Queue 使用 Sun JNDI LDAP 提供者并使用简单验证。

    Message Queue 支持 LDAP 验证故障转移:可以指定要尝试进行验证的 LDAP 目录服务器列表(请参见 imq.user.repos.ldap.server 属性的参考信息)。

    有关说明如何设置 LDAP 用户系统信息库相关属性的示例,请参见代理的 config.properties 文件。

  4. 必要时,还需要编辑访问控制属性文件中的用户/组和规则。有关使用访问控制属性文件的详细信息,请参见用户授权:访问控制属性文件

  5. 如果您希望代理在连接验证和组搜索时通过 SSL 与 LDAP 目录服务器进行通信,您需要在 LDAP 服务器中激活 SSL,然后在代理配置文件中设置以下属性:

    • 指定 LDAP 服务器进行 SSL 通信时所使用的端口。例如:


      imq.user_repository.ldap.server=myhost:7878
    • 将代理属性 imq.user_repository.ldap.ssl.enabled 设置为 true

      使用多个 LDAP 目录服务器时,可以使用 ldap:// 指定每个额外的目录服务器。例如:

      imq.user_repository.ldap.server = myHost:7878 ldap:// otherHost:7878

      用空格分隔每个额外的目录服务器。对于其他与 LDAP 相关的属性,列表中的所有目录服务器必须使用相同的值。

为管理员设置访问控制

要创建管理用户,请使用访问控制属性文件指定能够创建 ADMIN 连接的用户和组。必须在 LDAP 目录中预定义这些用户和组。

能够创建 ADMIN 连接的任何用户或组都可以执行管理命令。

Procedure设置管理用户

  1. 将代理属性 imq.accesscontrol.enabled 设置为 true(默认值),以允许使用访问控制文件。

    imq.accesscontrol.enabled 属性允许使用访问控制文件。

  2. 打开访问控制文件 accesscontrol.properties附录 A, Message QueueTM 数据在特定平台上的位置 中列出了该文件的位置。

    该文件包含一个如下所示的条目:

    service connection access control##################################connection.NORMAL.allow.user=*connection.ADMIN.allow.group=admin

    列出的条目是示例。请注意,admin 组存在于基于文件的用户系统信息库中,而非默认存在于 LDAP 目录中。您必须将在 LDAP 目录中定义的组的名称替换为要为其授予 Message Queue 管理员权限的组的名称。

  3. 要为用户授予 Message Queue 管理员权限,请按如下所示输入用户名:

    connection.ADMIN.allow.user= userName[[,userName2] ]

  4. 要为组授予 Message Queue 管理员权限,请按如下所示输入组名称:

    connection.ADMIN.allow.group= groupName[[,groupName2] ]