可以将Kafka配置为使用多种身份验证机制:纯文本用户名/密码,Kerberos或SSL。前两个使用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进行身份验证。我的问题是:如果我用PlainLoginModule
实现LoginModule的类替换并将该类放置在代理的类路径中,是否可以通过任何希望的方式(例如LDAP)实现身份验证?
我不能以合理的方式使用Kerberos,因为它的主体在我工作的组织内定义的方式,因此我希望使用LDAP,因为我需要支持RBAC。
是的,您可以为Kafka提供一个自定义类,该类可以实现LoginModule
并具有所需的身份验证逻辑。
然后用您的类名更新JAAS文件,并确保它在类路径中。
你需要把一些样板代码正确得到的一切设置,但你可以使用PlainLoginModule
,PlainSaslServerProvider
,PlainSaslServerFactory
和PlainSaslServer
作为例子。
您的LoginModule
类应具有与之相同的逻辑,PlainLoginModule
但应初始化您的Provider
实现(在静态块中)。
您的Provider
类应具有与之相同的逻辑,PlainSaslServerProvider
但应引用您的SaslServerFactory
实现。
您的SaslFactory
类应该再次具有与之相同的逻辑,PlainSaslServerFactory
但是创建实现的实例SaslServer
。
最后,您的SaslServer
类应在其evaluateResponse()
方法中实现必要的LDAP逻辑。只需确保正确设置即可,this.authorizationId
因为这将成为用户主体并设置complete
为true
(就像PlainSaslServer.evaluateResponse()
这样)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句