使用 Kerberos 的 Cassandra 客户端身份验证失败

时间:2021-03-22 16:31:53

标签: cassandra kerberos cassandra-3.0 spring-data-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/工具

  1. java jdk 1.8。
  2. spring-boot 2.3.2
  3. 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();
    }

我们还能做些什么来解决这个问题?此外,任何解决此问题的建议都会有所帮助。

0 个答案:

没有答案