【问题标题】:Kerberos JAAS with Service name带有服务名称的 Kerberos JAAS
【发布时间】:2019-05-04 18:13:29
【问题描述】:

我正在尝试设置 Zookeeper / Kafka Kerberos 身份验证,但我的 keytab 是以一种有趣的方式创建的:

ktpass -princ zookeeper/hostname@TEST -mapuser zookeeper -mapOp add -Target TEST 

事实证明我可以做到这一点

kinit zookeeper@TEST

或者这个:

kinit zookeeper@TEST -S zookeeper/hostname@TEST

但我不能这样做:

kinit zookeeper/hostname@TEST
kinit: Client 'zookeeper/hostname@TEST' not found in Kerberos Database while getting initial credentials

所以这个 JAAS 文件可以工作:

Server {
       com.sun.security.auth.module.Krb5LoginModule required
       useKeyTab=true
       keyTab="/path/to/server/keytab"
       storeKey=true
       useTicketCache=false
       principal="zookeeper@TEST";
};

但这个不会:

Server {
       com.sun.security.auth.module.Krb5LoginModule required
       useKeyTab=true
       keyTab="/path/to/server/keytab"
       storeKey=true
       useTicketCache=false
       principal="zookeeper/hostname@TEST";
};

那么我怎样才能使用 JAAS 文件来完成这项工作呢?我找不到拥有多个主体或指定服务名称(如kinit)的选项?

【问题讨论】:

    标签: security apache-kafka apache-zookeeper kerberos sasl


    【解决方案1】:

    假设您使用的是 Active Directory,您需要将您的用户主体名称 zookeeper 映射到服务主体名称

    setspn -s zookeeper/localhost@TEST zookeeper
    

    更多详情here

    你仍然使用 zookeeper@TEST 作为 JAAS 文件中的主体。

    【讨论】:

    • 谢谢!您可以将 spn 设置为多个主机吗?这个想法是让一个用户和几个负责人
    • 是的:setspn -s zookeeper/host_1@TEST zookeepersetspn -s zookeeper/host_2@TEST zookeeper
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多