【问题标题】:Kafka SASL_PLAINTEXT with GSSAPI for kerberosKafka SASL_PLAINTEXT 与 GSSAPI for kerberos
【发布时间】:2019-03-08 14:01:23
【问题描述】:

我正在尝试使用带有纯文本的 SASL 和 GSSAPI 运行单个 kafka 服务器,但出现以下错误。

[2018-10-03 16:08:54,220] 错误 [控制器 id=0,targetBrokerId=0] 连接到节点 0 的身份验证失败,原因是: 错误: (java.security.PrivilegedActionException: javax.security.sasl.SaslException:GSS 启动失败 [引起 GSSException:未提供有效凭据])在评估时发生 从 Kafka Broker 收到的 SASL 令牌。卡夫卡客户端将去 AUTHENTICATION_FAILED 状态。 (org.apache.kafka.clients.NetworkClient)

在 server.properties 中的更改是:

listeners=SASL_PLAINTEXT://kafka.example.com:9095
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=GSSAPI
advertised.listeners=SASL_PLAINTEXT://kafka.example.com:9095
sasl.enabled.mechanism=GSSAPI
sasl.kerberos.service.name=HTTP

这是我的 jaas 配置:

KafkaServer {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    useTicketCache=true
    storeKey=true
    keyTab="/home/kafka/kafka_server.keytab"
    principal="HTTP/kafka.example.com@UNIX.EXAMPLE.COM";
};

关于如何解决这个问题的任何线索?

【问题讨论】:

    标签: apache-kafka kerberos sasl gssapi


    【解决方案1】:

    首先, 使用 KeyTab (useKeyTab=true) 或使用 TicketCache (useTicketCache=true)。不要同时使用两者。这可能会导致冲突。

    如果你有自己的Kerb,为kafka创建一个原则

    sudo /usr/sbin/kadmin.local -q 'addprinc -randkey kafka/{hostname}@{REALM}' sudo /usr/sbin/kadmin.local -q "ktadd -k /etc/security/keytabs/{keytabname}.keytab kafka/{hostname}@{REALM}"

    使用

    sasl.kerberos.service.name="kafka"

    设置JVM参数

    export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/jaas.conf -Djava.security.krb5.conf=/etc/krb5.conf -Dsun.security.krb5.debug=true"

    希望这会有所帮助。

    【讨论】:

    • 我没有设置 useKeyTab=true。我需要明确添加 useKeyTab=false 吗?
    • 对不起。我猜你是在提到服务器。这会影响客户吗?
    • 是的.. 尝试更改您的服务器属性。除非您尝试创建或更改主题,否则您可以使用 HTTP 供客户端发布和使用。
    猜你喜欢
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2019-03-15
    • 2022-08-23
    相关资源
    最近更新 更多