我正试图通过Kerberos票证缓存连接到Cassandra集群,并使用以下配置集-
java -Dcassaandra.ip.address=<IPaddress>
-Djava.security.auth.login.config=kerb-client.conf
-Dsun.security.krb5.debug=true
-Djavax.security.auth.useSubjectCredsOnly=false
-Djava.security.krb5.conf=krb5.conf -jar test-kerberos.jar
路缘石客户端conf:CassandraJavaClient{com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true ticketCache=cacheFile principle="abc@abc.net";};
我得到以下错误-
Unexpected error during transport initialization (java.lang.SecurityException: java.io.IOException: Configuration Error:
Line 3: expected [option value])
at com.datastax.driver.core.Connection$2.apply(Connection.java:205)
at com.datastax.driver.core.Connection$2.apply(Connection.java:191)
似乎缺少一些配置,但我无法确定根本原因。请告知纠正步骤。
Java驱动程序需要配置一个自定义验证器,以便使用Kerberos进行身份验证。
Instacluster为Cassandra提供了一个开源的Kerberos验证器,可与Java驱动程序一起使用。详细信息和代码可在此处获取:
- Cassandra Kerberos验证器
- Java驱动程序Kerberos插件
干杯!
感谢您的回复。我已经在使用com.datastax.cassandra:casandra驱动程序核心:3.5.1。下面是我的示例代码片段。
Cluster cluster = Cluster.builder()
.addContactPoints(ipAddress)
.withAuthProvider(KerberosAuthProvider.builder().withSaslProperties(saslProperties).build())
.withSSL()
.build();
cluster.connect();
更改ticketCache文件名后,问题得到了解决。我似乎引用了不正确的缓存文件。现在,我似乎得到了其他东西-没有提供有效的凭据例外。但我已经摆脱了基本的配置错误。