zookeeper sasl AuthFailed for 报错问题解决

问题描述关键字

o.a.z.client.ZooKeeperSaslClient : An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database (7) - UNKNOWN_SERVER)]) occurred when evaluating Zookeeper Quorum Member’s received SASL token. This may be caused by Java’s being unable to resolve the Zookeeper Quorum Member’s hostname correctly. You may want to try to adding ‘-Dsun.net.spi.nameservice.provider.1=dns,sun’ to your client’s JVMFLAGS environment. Zookeeper Client will go to AUTH_FAILED state.

AuthFailed for XX路径

问题背景

同一台应用中存在kafka、zookeeper;生产环境 kafka为sasl登录连接、zookeeper为ssl连接。导致应用启动报上面的错误,提示zookeeper参数同sasl进行登录,但是咨询zookeeper集群提供者,只需要配置ssl的环境变量设置,且没有权限控制。

问题解决

-Dzookeeper.sasl.client=false
增加环境变量设置,取消 zookeeper sasl登录。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Java框架中的ZooKeeper时,如果需要进行SASL身份验证,可以按照以下步骤进行操作: 1.在ZooKeeper服务器端配置JVM参数,启用SASL身份验证,例如: ``` -Dzookeeper.serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory -Djava.security.auth.login.config=/path/to/zookeeper_server_jaas.conf ``` 2.在ZooKeeper客户端端配置JVM参数,启用SASL身份验证,例如: ``` -Djava.security.auth.login.config=/path/to/zookeeper_client_jaas.conf ``` 3.在ZooKeeper服务器端和客户端端分别编写对应的JAAS配置文件,例如: 服务器端配置文件zookeeper_server_jaas.conf: ``` Server { org.apache.zookeeper.server.auth.DigestLoginModule required user_admin="password"; }; ``` 客户端配置文件zookeeper_client_jaas.conf: ``` Client { org.apache.zookeeper.server.auth.DigestLoginModule required username="admin" password="password"; }; ``` 其中,user_admin和password是服务器端的用户名和密码,username和password是客户端的用户名和密码。 4.在ZooKeeper客户端端编写对应的代码,例如: ``` import org.apache.zookeeper.*; import org.apache.zookeeper.data.Stat; import java.io.IOException; import java.util.concurrent.CountDownLatch; public class ZooKeeperClient { private static final String CONNECT_STRING = "localhost:2181"; private static final int SESSION_TIMEOUT = 5000; private static final String ZOOKEEPER_PATH = "/test"; private static CountDownLatch countDownLatch = new CountDownLatch(1); public static void main(String[] args) throws IOException, InterruptedException, KeeperException { ZooKeeper zooKeeper = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, new Watcher() { @Override public void process(WatchedEvent event) { if (event.getState() == Event.KeeperState.SyncConnected) { countDownLatch.countDown(); } } }); countDownLatch.await(); String result = new String(zooKeeper.getData(ZOOKEEPER_PATH, false, new Stat())); System.out.println(result); zooKeeper.close(); } } ``` 以上代码中,我们使用了CountDownLatch来等待ZooKeeper客户端连接上ZooKeeper服务器。在连接成功之后,我们调用了zooKeeper.getData()方法来获取指定路径节点的数据。 以上就是在Java框架中使用ZooKeeper进行SASL身份验证的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值