7.2. 使用 Kerberos 进行身份验证
当与适当配置的服务器一起使用时,客户端可以配置为使用 Kerberos 进行身份验证。要启用 Kerberos,请使用以下步骤。
使用
amqp.saslMechanismsURI 选项将客户端配置为使用 SASL 身份验证的GSSAPI机制。amqp://myhost:5672?amqp.saslMechanisms=GSSAPI failover:(amqp://myhost:5672?amqp.saslMechanisms=GSSAPI)将
java.security.auth.login.config系统属性设置为包含 KerberosLoginModule的适当配置的 JAAS 登录配置文件的路径。-Djava.security.auth.login.config=<login-config-file>登录配置文件可能类似以下示例:
amqp-jms-client { com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true; };
使用的确切配置将取决于您如何为连接建立凭证,以及使用的特定 LoginModule。有关 Oracle Krb5LoginModule 的详情,请查看 Oracle Krb5LoginModule 类参考。有关 IBM Java 8 Krb5LoginModule 的详情,请查看 IBM Krb5LoginModule 类参考。
可以将 LoginModule 配置为建立用于 Kerberos 进程的凭证,如指定主体以及是否使用现有的票据缓存或 keytab。但是,如果 LoginModule 配置不提供建立所有必要的凭据的方法,则请求并从客户端连接对象传递用户名和密码值(如果使用 ConnectionFactory 选项创建连接或之前通过 URI 选项配置)。
请注意,Kerberos 仅支持验证目的。使用 SSL/TLS 连接进行加密。
以下连接 URI 选项可用于影响 Kerberos 身份验证过程。
- sasl.options.configScope
-
用于验证的登录配置条目的名称。默认值为
amqp-jms-client。 - sasl.options.protocol
-
GSSAPI SASL 进程中使用的协议值。默认值为
amqp。 - sasl.options.serverName
-
GSSAPI SASL 进程中使用的
serverName值。默认为来自连接 URI 的服务器主机名。
与前面详述的 amqp. 和 transport. 选项类似,这些选项必须基于每个主机指定,或者作为故障切换 URI 中的 all-host 嵌套选项。