apache-kafka - 使用 com.ibm.security.auth.module.Krb5LoginModule 时如何设置 JAAS serviceName

标签 apache-kafka kerberos jaas websphere-liberty

我有一个托管在 IBM Websphere Liberty Core 上的 Kafka 生产者 Web 应用程序。远程 Kafka 主题通过 Kerberos 得到保护。

我们使用的是 IBM jdk,所以 jaas 类名是

com.ibm.security.auth.module.Krb5LoginModule

JAAS 配置需要以下选项

KafkaClient {
     com.ibm.security.auth.module.Krb5LoginModule required
     useKeyTab=true
     keyTab="/etc/security/keytabs/storm.service.keytab"
     storeKey=true
     useTicketCache=false
     serviceName="kafka"
     principal="storm@EXAMPLE.COM";
    };

不幸的是 com.ibm.security.auth.module.Krb5LoginModule 类只接受这些选项

 Kerberos options
       principal=principalName
       credsType=initiator|acceptor|both (default=initiator)
       forwardable=true|false (default=false)
       proxiable=true|false (default=false)
       renewable=true|false (default=false)
       useCcache=URL
       useKeytab=URL
       useDefaultCcache=true|false (default=false)
       useDefaultKeytab=true|false (default=false)



 JAAS-suggested options:
       debug=true|false (default=unset, JGSS debug options used)
       tryFirstPass=true|false (default=false)
       useFirstPass=true|false (default=false)
       moduleBanner=true|false (default=false)

如何使用 Liberty Core 上的 IBM JDK 将服务名称指定为“kafka”?

最佳答案

Kerberos 服务主体名称包括服务名称:

<serviceName>/<hostname>@KerberosRealmName

您是否尝试过将其指定为以下内容

principal="kafka/<hostname>@EXAMPLE.COM"

关于apache-kafka - 使用 com.ibm.security.auth.module.Krb5LoginModule 时如何设置 JAAS serviceName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35162114/

相关文章:

Spring云流0​​x104567910

java - 使用 KafkaAvroDecoder 将 Avro 消息反序列化为特定数据

apache-kafka - 有没有办法确定 Kafka 主题中消息的来源?

java - 使用 GSSManager 验证 Kerberos 票证

hadoop - 如果我的hadoop(HDP)集群已经使用AD/LDAP,为什么还要对其进行Kerberise?

apache-kafka - Kafka-是否可以更改Topic的分区数,同时保持对生产者和消费者透明的更改?

java - java LoginContext.login() 如何工作?

带有 JAAS 和多个领域的 Kerberos 身份验证

java - 绕过对用户名/密码的 JConsole 要求 - 当使用带有 JMX 的 Jaas 自定义登录模块来处理授权和身份验证时

java - 无法停止 Kerberos 调试日志记录