Apache kafka Kafka是否可以提供自定义LoginModule以支持LDAP?

Apache kafka Kafka是否可以提供自定义LoginModule以支持LDAP?,apache-kafka,ldap,jaas,sasl,Apache Kafka,Ldap,Jaas,Sasl,Kafka可以配置为使用几种身份验证机制:明文用户名/密码、Kerberos或SSL。前2个使用SASL,其中需要JAAS配置文件 对于纯文本身份验证方法,配置如下所示(取自): 如果可能,我想使用LDAP进行身份验证。我的问题是:如果我用实现该类的类替换PlainLoginModule,并将该类放置在代理的类路径中,那么我能否以我希望的任何方式实现身份验证(即LDAP) 我不能以合理的方式使用Kerberos,因为它的主体是在我工作的组织中定义的,因此我希望使用LDAP,因为我需要支持RBAC

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

对于纯文本身份验证方法,配置如下所示(取自):

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


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

是的,您可以为Kafka提供一个自定义类,该类实现
LoginModule
,并在其中包含您想要的身份验证逻辑

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

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

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

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

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


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

您是否有这样做的示例?很遗憾,我没有可以分享的示例,但我已经添加了有关如何设置一切的详细信息。您需要定义几个类,但大部分都是用很少的逻辑进行诈骗。很好,谢谢-很高兴记录下您需要实现所有这些类,而不仅仅是LoginModule,因为我已经了解了PlainSaslServer硬编码依赖于PlainsLoginModule的方法,并且您将获得失败的身份验证错误(对于KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret" user_admin="admin-secret" user_alice="alice-secret"; };