AuthenticationException:凭据无效!在 Hazelcast 中使用正确的凭据时

AuthenticationException: Invalid credentials! When using right credentials with Hazelcast

所以我正在使用 Hazelcast 创建一个服务器和一个客户端。 原来我在尝试 运行 客户端时遇到以下异常。

WARNING: hz.client_0 [56086-56015-56176] [3.7.8] Exception during initial connection to /192.168.1.112:5706
com.hazelcast.client.AuthenticationException: Invalid credentials!
    at com.hazelcast.client.connection.nio.ClientConnectionManagerImpl.onResponse(ClientConnectionManagerImpl.java:530)
    at com.hazelcast.client.connection.nio.ClientConnectionManagerImpl.onResponse(ClientConnectionManagerImpl.java:513)
    at com.hazelcast.spi.impl.AbstractInvocationFuture.run(AbstractInvocationFuture.java:251)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access1(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    at com.hazelcast.util.executor.HazelcastManagedThread.executeRun(HazelcastManagedThread.java:76)
    at com.hazelcast.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:92)

错误来自:

ClientConfig hzConfig = getHzConfig();
hz = HazelcastClient.newHazelcastClient(hzConfig);

getHzConfig:

private static ClientConfig getHzConfig() {
    String addresses = Optional.ofNullable(System.getProperty("addresses")).orElseThrow(IllegalArgumentException::new);
    String addressList[] = addresses.split(";");

    ClientConfig clientConfig = new ClientConfig();
    clientConfig.setGroupConfig(new GroupConfig("56086-56015-56176", "56086-56015-56176")); 

    ClientNetworkConfig networkConfig = clientConfig.getNetworkConfig();

    for (String address : addressList) {
        networkConfig.addAddress(address);
    }

    return clientConfig;
}

这是我的 hazelcast.xml

您的服务器有组名56015-56086-56176

您的客户端有组名56086-56015-56176

三重奏的前两部分被移调。

密码相同。另请注意,密码从 3.8 开始已弃用,请参阅 here

您的客户端配置使用密码 "56086-56015-56176",但您的成员配置包含群组密码 "56015-56086-56176"。 IE。第一部分和第二部分(破折号分隔)被交换。

这是正确的客户端配置:

clientConfig.setGroupConfig(new GroupConfig("56015-56086-56176", "56015-56086-56176"));

更新: 确保 Hazelcast 成员在服务器端使用正确的配置文件。它默认在当前目录中搜索 hazelcast.xml。您可以明确提供路径 - 使用编程方式:

Config config = new XmlConfigBuilder("/path/to/hazelcast.xml").build();
HazelcastInstance hz = Hazelcast.newHazelcastInstance(config);

或者如果你使用简单的 Hazelcast.newHazelcastInstance() 你可以通过 hazelcast.config 系统控制它 属性:

java -Dhazelcast.config=/path/to/hazelcast.xml ...