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系统属性设置为 JAAS 登录配置文件的路径,其中包含 KerberosLoginModule的适当配置。-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 创建 Connection 或者之前通过其 URI 选项配置,则可以从客户端 Connection 对象请求和传递用户名和密码值。
请注意,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 嵌套选项指定。