gpt4 book ai didi

java - 来自单个java应用程序的zookeeper中使用sasl的多用户身份验证

转载 作者:行者123 更新时间:2023-12-01 11:17:28 24 4
gpt4 key购买 nike

我有zookeeper配置,允许客户端通过sasl(使用摘要md5)进行身份验证。 Zookeeper 配置为使用 sasl,sasl 身份验证提供程序存在于 Zookeeper 配置中。我有 jaas 配置和所有用户的列表。每个客户端都有自己的 jaas 配置文件以及用户和密码。在此配置中,一切正常 - 客户端可以使用 Zookeeper。

但事情是这样的。我有一些客户端无法直接连接到zookeeper - 它连接并验证到单独的模块中。该模块(用 Java 编写)理解传入请求并使用 Curator Framework 客户端与 Zookeeper 通信,然后在需要时返回结果。

Java 模块有自己的 jaas 配置用于身份验证(用户/密码),因此基本上它可以在 Zookeeper 内作为一个用户进行身份验证 - 即使有许多用户(具有单独的用户/密码)在此模块中进行身份验证。

如何实现java模块可以在zookeeper中验证尽可能多的用户(如果user1调用java模块,它应该在zookeeper中验证为user1,如果user2调用java模块,它应该验证user2等)

这是我尝试过的方法之一(我知道这种方法不是最好的方法,但我不是动物园管理员的专家,所以我还没有更好的想法):

  • Java 模块有许多 jaas 配置(每个用户一个)。
  • 当请求到达并且用户在 java 模块中进行身份验证时 - 模块选择 jaas 配置(通过设置系统属性 java.security.auth.login.config 指向 jaas 配置之一)
  • 模块创建新的 Curator Framework 客户端(它将针对同一用户的后续请求进行缓存)
  • 模块使用新的客户端对zookeeper进行操作

令我惊讶的是,sasl 身份验证仅针对第一个策展人客户端执行一次。所有其他客户端“共享”相同的身份验证。

有什么方法可以让每个客户端对zookeeper使用单独的身份验证吗?

最佳答案

不确定我是否正确理解了这个问题,但这可能与apache ZK客户端在内部将登录对象创建为单例这一事实有关,这意味着同一JVM中的每个客户端都将获得第一个/相同的身份验证登录凭据.

关于java - 来自单个java应用程序的zookeeper中使用sasl的多用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31640142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com