当前位置: 首页 > 知识库问答 >
问题:

可以为Kafka提供自定义LoginMoules来支持LDAP吗?

通安宁
2023-03-14

Kafka可以配置为使用几种身份验证机制:明文用户名/密码、Kerberos或SSL。前2个使用SASL,其中需要JAAS配置文件。

对于纯文本auth方法,配置如下(取自文档):

KafkaServer {
   org.apache.kafka.common.security.plain.PlainLoginModule required
   username="admin"
   password="admin-secret"
   user_admin="admin-secret"
   user_alice="alice-secret";
};

如果可能的话,我想使用LDAP进行身份验证。我的问题是:如果我用一个实现LoginMoules的类替换PlainLoginModule,并将该类放在代理的类路径中,我是否可以以我希望的任何方式实现身份验证(即:LDAP)?

我不能以合理的方式使用Kerberos,因为它的主体是在我工作的组织中定义的,因此我希望使用LDAP,因为我需要支持RBAC。

共有1个答案

闻人仲渊
2023-03-14

是的,您可以为Kafka提供一个自定义类,该类实现LoginModule,并具有所需的身份验证逻辑。

然后用您的类名更新JAAS文件,并确保它位于类路径中。

您需要输入一些样板代码才能正确设置所有内容,但您可以使用PlainsLoginModulePlainSaslServerProviderPlainSaslServerFactoryPlainSaslServer作为示例。

您的LoginModule类应具有与PlainLoginModule相同的逻辑,但应初始化提供程序实现(在静态块中)。

您的提供程序类应具有与PlainSaslServerProvider相同的逻辑,但应引用您的SALServerFactory实现。

您的SaslFactory类应该同样具有与PlainSaslServerFactory相同的逻辑,但要创建SaslServer实现的实例。

最后,您的SaslServer类应该在其评估响应()方法中实现必要的LDAP逻辑。只要确保设置正确设置this.authorizationId,因为这将成为用户主体,并将完成设置为true(如PlainSaslServer.evaluate响应()

 类似资料:
  • 例如,我在语法中定义了几个lexer规则: 我需要以某种方式标记关键字(“int”、“float”和其他),当我使用TokenStream获取令牌时,我可以通过一些自定义符号对其进行过滤。 有可能吗? 现在我只看到一种方法——将必要的词汇组合成某种规则。 使现代化 我尝试应用下面第一个答案的第一个选项,但遇到了下一个问题:我得到一个错误:“TOKENNAME不是可识别的令牌名称” 因为这是一个问题

  • 问题 如何用内置的cheerypy提供SSL支持? 解法 import web from web.wsgiserver import CherryPyWSGIServer CherryPyWSGIServer.ssl_certificate = "path/to/ssl_certificate" CherryPyWSGIServer.ssl_private_key = "path/to/ssl

  • 我有类所有的类在我的Spring的网络流量应用程序,它有getter/setters没有get和设置前缀和setter返回这个。因此,我也定义了我的自定义杰克逊配置,它与我所有的控制器一起工作,成功地序列化反序列化。 我的杰克逊配置 我的请求类 现在如果我使用下面的webclient请求 我得到一个如下的例外 但是如果我通过下面这样的地图,它就会工作。 我已经尝试删除@Access注释并自己创建g

  • 在上一节,我们创建了一个新的名为 gitrepo 的自定义资源类型并告诉 Puppet 此类型需要携带两个参数,分别为 source 和 path。 然而到目前为止,我们还没有告诉 Puppet 如何检出仓库,即如何创建这种类型的具体实例。 这正是提供者(provider)的用武之地。 正如我们之前看到的,一个类型经常会有几种可能的提供者。在本例中, 对一个 Git 仓库进行实例化仅有一种明智的方

  • 我正在尝试创建一个自定义的KeyClope提供程序,它将为登录逻辑添加一些内容。我已经读过如何为KeyClope创建提供者(或插件),我正在与之合作的项目中已经有一个提供者(或插件),但我对它们知之甚少。 我需要为用户身份验证/授权添加自定义逻辑:我希望能够检查内部数据库中的一些字段来验证人员帐户。但是我没有找到任何关于类似情况的指南或好文章。有人能给我提供一些关于从什么开始的链接吗?为了实现这样

  • 我们有一个产品有一个客户,当我们作为服务提供商并且idp在客户端时,我们使用Spring Security SAML为该客户实现了SAML流。 现在,我们有另一个客户也希望身份验证与 SAML 一起使用,并且我们希望同一 SP 为此客户实现 SAML 流,第二个客户还将有 2 个用于 SAML 的流,一个用于移动设备,另一个用于使用相同 IDP 的其他设备。两个客户的 IDP 是不同的。 问题 两