Joh*_*ohn 4 ldap sasl jaas apache-kafka
可以将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";
};
Run Code Online (Sandbox Code Playgroud)
我想使用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()这样)
| 归档时间: |
|
| 查看次数: |
3142 次 |
| 最近记录: |