Apache kafka Kafka是否可以提供自定义LoginModule以支持LDAP?
Kafka可以配置为使用几种身份验证机制:明文用户名/密码、Kerberos或SSL。前2个使用SASL,其中需要JAAS配置文件 对于纯文本身份验证方法,配置如下所示(取自): 如果可能,我想使用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
PlainLoginModule
,并将该类放置在代理的类路径中,那么我能否以我希望的任何方式实现身份验证(即LDAP)
我不能以合理的方式使用Kerberos,因为它的主体是在我工作的组织中定义的,因此我希望使用LDAP,因为我需要支持RBAC。是的,您可以为Kafka提供一个自定义类,该类实现
LoginModule
,并在其中包含您想要的身份验证逻辑
然后用您的类名更新JAAS文件,并确保它位于类路径中
您需要输入一些样板代码才能正确设置所有内容,但您可以使用PlainsLoginModule
、PlainSaslServerProvider
、PlainSaslServerFactory
和PlainSaslServer
作为示例
您的LoginModule
类应具有与PlainLoginModule
相同的逻辑,但应初始化提供程序
实现(在静态块中)
您的提供程序
类应具有与PlainSaslServerProvider
相同的逻辑,但应引用您的SALServerFactory
实现
您的SaslFactory
类应该同样具有与PlainSaslServerFactory
相同的逻辑,但要创建SaslServer
实现的实例
最后,您的
SaslServer
类应该在其evaluateResponse()
方法中实现必要的LDAP逻辑。只需确保正确设置setthis.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";
};