如何解决使用 Kerberos 的 Cassandra 客户端身份验证失败
我们经常看到来自 Cassandra 客户端日志的警告消息
[s0-io-8] DEBUG kerberosAuthProvider@KerberosAuthenticator Loggin in login configuration entry named CassandraJavaClient.
[s0-admin-1] WARN [s0/<IP ADDRESS : PORT>] **Error while opening new channel (ConnectionInitException:** [s0|id: 0xa9cfaf9e,l:/10.255.85.44:60362
- R:<CASSANDRA SERVER NODE IP: PORT>] Protocol initialization request,step 1 (STARTUP {CQL_VERSION=3.0.0,COMPRESSION=snappy,DRIVER_NAME=DataStax Java driver for Apache Cassandra(R),DRIVER_VERSION=4.6.1,CLIENT_ID = <CLIEN_ID>}): unexpected exception (java.lang.RuntimeException: **Failed to establishe a login ))**
虽然我们能够连接到集群并且有时能够运行cql。但是这些警告消息非常频繁(大约 2k/24 小时)。警告消息似乎来自管理员连接。
有时我们在执行查询时会遇到异常。在这些事件中,我们需要重新启动 (PCF) spring boot 应用程序。同样在重新启动后,这些警告消息也不会出现。几天后,这些警告再次出现。有时重新启动也不会清除警告。 无法理解问题。 使用简单的用户名/密码而不是 Kerberos 身份验证器时不会出现此问题。
我们正在使用 Kerberos 进行连接。所有必需的属性都已正确设置。
我们在我们的应用程序中使用以下软件/jars/工具
- java jdk 1.8。
- spring-boot 2.3.2
- com.datastax.oss:java-driver-core 4.6.1
CassandraJavaClient { com.sun.security.auth.module.krb5LoginModule 需要 不要提示=真 调试=真 refreshKrb5Config=true useTicketCache=true };
CqlSession session = CqlSession.builder().addContactPoints(cpoints)
.withAuthProvider(authProvider)
.withConfigLoader(getConfigLoaders())
.withSslContext(SSLContext.getDefault())
.withKeyspace(keyspace)
.withLocalDatacenter(localdc)
.build();
return session;
@Bean
protected AuthProvider getKerberosAuthProvider() {
return KerberosAuthProvider.builder()
.withSaslProtocol("caas")
.withServerNameResolver(new CustomServerNameResolver())
.build();
}
我们还能做些什么来解决这个问题?此外,任何解决此问题的建议都会有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。