如何通过java认证连接到cassandra 5.1

kq4fsx7k  于 2021-06-09  发布在  Cassandra
关注(0)|答案(1)|浏览(360)

我正在尝试通过java客户端的身份验证连接到dse 5.1集群。我用的Cassandra驱动程序是

<dependency>
        <groupId>com.datastax.cassandra</groupId>
        <artifactId>cassandra-driver-core</artifactId>
        <version>3.1.4</version>
    </dependency>

添加了一个简单的测试,尝试连接到特定的键空间:

@Test
public void testConnection() {
    String user = "****";
    String pswd = "*******";
    String host = "********"
    Cluster cluster = Cluster.builder().addContactPoints(host)
            .withPort(9042)
            .withCredentials(user.trim(), pswd.trim())
            .build();
    Session session = cluster.connect(QueryBuilder.quote("TestKS"));
    Assert.assertNotNull(session);
}

我的结局是 com.datastax.driver.core.exceptions.AuthenticationException 从终端,我可以用相同的凭据连接到此节点,但从java代码,我无法通过此异常。
堆栈跟踪

com.datastax.driver.core.exceptions.AuthenticationException: Authentication error on host /<host>:9042: Failed to login. Please re-try.
    at com.datastax.driver.core.Connection$8.apply(Connection.java:390)
    at com.datastax.driver.core.Connection$8.apply(Connection.java:359)
    at com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AbstractTransformFuture.java:211)

请告知我遗漏了什么。

u91tlkcl

u91tlkcl1#

您没有提供完整的堆栈跟踪,因此很难确切地知道代码失败的原因。
无论如何,java驱动程序3.1.4已经有4年的历史了,如果您刚开始使用一个新的应用程序,我们建议您使用与dse 5.1兼容的最新java驱动程序4(顺便说一下,没有cassandra 5.1)。
可以通过编程方式在驱动程序中配置身份验证,但建议的方法是在配置文件中指定凭据。例如:

datastax-java-driver {
  advanced.auth-provider {
    class = PlainTextAuthProvider
    username = user
    password = pass
  }
}

有关详细信息,请参阅驱动程序文档中的“身份验证”页。
如果你是新开发应用程序的Cassandra,我们有样本应用程序在阿斯特拉,你可以看到完整的源代码,所以你可以很快开始。干杯!

相关问题