Sun Java System Message Queue 4.1 发行说明

设置符合 JAAS 的验证

设置符合 JAAS 的验证的过程包括设置一些代理和系统属性,以便选择这种验证类型、指定配置文件位置以及指定要使用的登录模块入口。

本部分说明了 JAAS 客户端、登录模块和 JAAS 配置文件是如何相互关联的,然后介绍了设置符合 JAAS 的验证所需的过程。下图显示了配置文件、登录模块和代理之间的关系。

图 1–3 设置 JAAS 支持

该图显示了与 JAAS 相关的文件之间的关系。该图后面的文本解释了其内容。

正如图中所示,JAAS 配置文件 MyJAASCFile.config 包含对几个登录模块(组合在一个入口点中)的引用。代理通过查看 Java 系统属性 java.security.auth.login.config 或 Java 安全属性文件来查找配置文件。要使用的登录模块是通过查看代理属性 imq.user_repository.jaas.name 确定的,该属性指定配置文件中的所需入口。可以在 lib/ext 目录中找到这些模块的类。

要为 Message Queue 设置 JAAS 支持,您必须完成以下步骤。(在开发环境中,可以由开发者完成所有这些步骤。在生产环境中,将由管理员完成其中的某些任务。)

  1. 创建一个或多个用于实现验证服务的登录模块类。下面列出了代理支持的 JAAS 回调类型。

    javax.security.auth.callback.LanguageCallback

    代理使用此回调为验证服务传递代理运行的语言环境。可以使用该值来进行本地化。

    javax.security.auth.callback.NameCallback

    代理使用此回调为验证服务传递 Message Queue 客户端在请求连接时指定的用户名。

    javax.security.auth.callback.TextInputCallback

    TextInputCallback.getPrompt()imq.authentication.type 时,代理使用此回调为验证服务指定 imq.authentication.type 的值。目前,此字段的值只能为 basic。这表示使用 Base-64 密码编码。

    javax.security.auth.callback.PasswordCallback

    代理使用此回调为验证服务传递 Message Queue 客户端在请求连接时指定的密码。

    javax.security.auth.callback.TextOutputCallback

    通过将文本输出记录到代理日志文件中,代理使用此回调为验证服务提供日志记录服务。回调的消息类型 ERRORINFORMATIONWARNING 分别映射到代理日志级别 ERRORINFOWARNING

  2. 使用引用登录模块类的入口创建 JAAS 配置文件,并为 Message Queue 管理员指定此文件的位置。(可以远程查找该文件,并且可以使用 url 指定其位置。)

  3. 记下 JAAS 配置文件中的入口(它引用登录实现类)的名称。

  4. 将用于实现登录模块的类归档为 jar 文件,然后将 jar 文件放在 Message Queue 的 lib/ext 目录中。

  5. 配置与 JAAS 支持相关的代理属性。表 1–2 对此进行了描述。

  6. 设置以下系统属性以指定 JAAS 配置文件的位置。

    java.security.auth.login.config= JAAS_Config_File_Location

    例如,可以在启动代理时指定配置文件。

    imqbrokerd -Djava.security.auth.login.config=JAAS_Config_File_Location

    可以使用其他方法来指定 JAAS 配置文件的位置。有关其他信息,请参见

    http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/tutorials/LoginConfigFile.html

下表列出了设置 JAAS 支持所需的代理属性。

表 1–2 用于 JAAS 支持的代理属性

属性 

描述 

imq.authentication.type

设置为 basic 以表示使用 Base-64 密码编码。这是 JAAS 验证唯一允许的值。

imq.authentication.basic.user_repository

设置为 jaas 以指定 JAAS 验证。

imq.accesscontrol.type

设置为 file

imq.user_repository.jaas.name

设置为 JAAS 配置文件中的所需入口的名称,该入口引用要用作验证机制的登录模块。这是在步骤 3 中记下的名称。

imq.user_repository.jaas.userPrincipalClass

此属性(由 Message Queue 访问控制使用)指定登录模块中的 java.security.Principal 实现类,代理使用该类来提取主体名称,以表示 Message Queue 访问控制文件中的用户实体。如果未指定此属性,则改用在请求连接时从 Message Queue 客户端传递的用户名。

imq.user_repository.jaas.groupPrincipalClass

此属性(由 Message Queue 访问控制使用)指定登录模块中的 java.security.Principal 实现类,代理使用该类来提取主体名称,以表示 Message Queue 访问控制文件中的组实体。如果未指定此属性,则忽略 Message Queue 访问控制文件中的组规则(如果有)。