如何使用来自 Java 的身份验证连接到 Cassandra 5.1
How to connect to Cassandra 5.1 with Authentication from Java
我正在尝试通过 Java 客户端的身份验证连接到 DSE 5.1 集群。
我用过的Cassandra驱动是
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.1.4</version>
</dependency>
已添加尝试连接到特定 KeySpace 的简单测试:
@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.apply(Connection.java:390)
at com.datastax.driver.core.Connection.apply(Connection.java:359)
at com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AbstractTransformFuture.java:211)
请告知我遗漏了什么。
您没有提供完整的堆栈跟踪,因此很难确切知道您的代码失败的原因。
无论如何 Java 驱动程序 3.1.4 已有 4 年历史,如果您刚开始使用新应用程序,我们建议您使用最新的 Java 驱动程序 4,它是与 DSE 5.1 兼容(顺便说一句,没有 Cassandra 5.1)。
您可以通过编程方式在驱动程序中配置身份验证,但推荐的方法是在配置文件中指定凭据。例如:
datastax-java-driver {
advanced.auth-provider {
class = PlainTextAuthProvider
username = user
password = pass
}
}
有关详细信息,请参阅驱动程序文档中的 Authentication 页面。
如果您不熟悉为 Cassandra 开发应用程序,我们在 Astra 上提供了示例应用程序,您可以在其中查看完整的源代码,以便快速入门。干杯!
我正在尝试通过 Java 客户端的身份验证连接到 DSE 5.1 集群。 我用过的Cassandra驱动是
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.1.4</version>
</dependency>
已添加尝试连接到特定 KeySpace 的简单测试:
@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.apply(Connection.java:390)
at com.datastax.driver.core.Connection.apply(Connection.java:359)
at com.google.common.util.concurrent.AbstractTransformFuture$AsyncTransformFuture.doTransform(AbstractTransformFuture.java:211)
请告知我遗漏了什么。
您没有提供完整的堆栈跟踪,因此很难确切知道您的代码失败的原因。
无论如何 Java 驱动程序 3.1.4 已有 4 年历史,如果您刚开始使用新应用程序,我们建议您使用最新的 Java 驱动程序 4,它是与 DSE 5.1 兼容(顺便说一句,没有 Cassandra 5.1)。
您可以通过编程方式在驱动程序中配置身份验证,但推荐的方法是在配置文件中指定凭据。例如:
datastax-java-driver {
advanced.auth-provider {
class = PlainTextAuthProvider
username = user
password = pass
}
}
有关详细信息,请参阅驱动程序文档中的 Authentication 页面。
如果您不熟悉为 Cassandra 开发应用程序,我们在 Astra 上提供了示例应用程序,您可以在其中查看完整的源代码,以便快速入门。干杯!