IIDR CDC Kafka - EntraID / OAuth 2.0
请问有人能否告知IBM InfoSphere DataReplication for Kafka(CDC 2 Kafka)是否能够与需要通过Microsoft EntraID / OAuth2进行身份认证的Kafka集群/代理通信,并且是否需要每小时请求一次新的令牌?
mTLS在那里不是一个选项。
Best Regards
Martin
解决方案
我负责IBM CDC Kafka目标引擎的开发,有人把这个问题提给我(请提交一个支持工单以确保我们能看到你)。
因此我们的实现底层使用Apache Kafka的生产者,你可以通过实例目录下conf目录中的kafkaproducer.properties文件向它们提供属性。
我相信Kafka生产者本身会处理这个问题,因为它们在Apache Kafka Producer库中处理OAuth身份验证……例如,如果我们查看Confluent的文档,我们会看到如下内容….
来自Apache Kafka的示例…
https://kafka.apache.org/41/configuration/producer-configs/#producerconfigs_sasl.login.refresh.window.factor
Confluent的文档解释……
https://docs.confluent.io/platform/7.4/security/rbac/token-auth.html#token-refresh-for-sasl-oauthbearer
SASL/OAUTHBEARER的令牌刷新
https://docs.confluent.io/platform/7.4/security/rbac/token-auth.html#token-refresh-for-sasl-oauthbearer
Kafka会在令牌到期前定期刷新令牌,以便客户端能够继续连接到代理。影响刷新算法如何运行的参数作为生产者配置的一部分进行指定
Producer/Consumer/Broker Configuration PropertyDefaultsasl.login.refresh.window.factor .8
sasl.login.refresh.window.jitter .05
sasl.login.refresh.min.period.seconds 60
sasl.login.refresh.min.buffer.seconds 300
备选方案
我们设法解决了这个问题……你需要在producer/consumer的属性中指定OAUTH参数,以及在kcop属性中为模式注册表指定相应的参数……
但我们在使用的IIDR版本(11.4.0.5-5803)中发现了一个bug……你们把kafka-clients打包在v3.9.1与 confluent 7.8.0一起使用……在OAuth方面这两者不兼容。
在Kafka 3.9中,HttpAccessTokenRetriever的构造函数签名发生了变化,导致confluent客户端崩溃。
在尝试将confluent库升级到7.9.5时,我们遇到了传递性依赖错误,因为现在缺少confluent 7.9.x所需的新必需jar,因此我们最终降级kafka-clients到 3.8.1,终于起作用了……也许你们可以在下一个维护版本中解决这个问题……我们也提交了一个工单。