authentication - 基于客户端证书 DN 或其部分的 Kafka ACL to topic

标签 authentication ssl apache-kafka authorization ssl-certificate

我正在阅读 Kafka 文档(版本 0.11.0),我想根据其客户端证书对消费者和发布者的主题进行身份验证和授权。

它的工作方式应该是根据 DN 授予授权,或者仅根据它的一部分,如 CN、电子邮件或其他内容。

我看到 Kafka 代理可以配置为通过 TLS 使用安全通信并根据客户端证书对传入连接进行身份验证。但从我的角度来看,仅此而已。这就是 Kafka 代理可以使用客户端证书执行的所有操作。主题的 ACL 应该使用 SASL,我们可以使用 PLAIN、Kerberos 或 SCRAM。

那么是否可以根据 SSL 证书中的 CN 名称对客户端连接进行身份验证,并将基于它的主题的 ACL 设置放入 Kafka (kafka_2.11-0.11.0.1) 中?

最佳答案

是的,使用开箱即用的工具可以根据 SSL 用户名设置 ACL,但默认的 Principal 构建器不仅仅使用较短的 CN 值作为用户名。

来自 https://docs.confluent.io/current/kafka/authorization.html 处的 Confluent 在线文档

默认情况下,SSL 用户名的格式为

CN=writeuser,OU=Unknown,O=Unknown,L=Unknown,ST=Unknown,C=Unknown

可以通过在 server.properties 中设置自定义的 PrincipalBuilder 来更改它,如下所示:

principal.builder.class=CustomizedPrincipalBuilderClass

关于authentication - 基于客户端证书 DN 或其部分的 Kafka ACL to topic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46974652/

相关文章:

c# - 缺少相互证书的 Wcf 请求 wsse :Security

java - Spark Streaming 不包含 KafkaUtils

apache-kafka - Kafka 连接消费者引用偏移量并存储在消息中

php - 有没有办法强制使用 Zend_Auth 进行身份验证?

java - 用户使用 openid 登录时获取电子邮件的最佳位置

Python 以 javascript 形式登录网站

authentication - ReSTLet with Simple - 尽管 needClientAuthentication 设置为 true,它接受任何没有客户端证书的连接

ssl - 谁的 key 用于加密 HTTPS 响应?

java - JSESSIONID 是如何传递的?作为 header 参数还是作为 cookie 参数?

java - 避免apache kafka消费者重复消息的有效策略