美文网首页
Kafka AdminClient配置SCRAM

Kafka AdminClient配置SCRAM

作者: 淡淡的小番茄 | 来源:发表于2021-05-01 09:01 被阅读0次

    kafka2.7.0才支持通过API的方式,配置SCRAM。

    因为我们使用的2.3.9版本,目前没有直接的JAVA API来调用。熟悉的味道,开始查看源代码。通过查看

    kafka-configs.sh脚本,找到class的代码入口:

    kafka.admin.ConfigCommand。这个类是通过scala编写的,然后编译成class文件,放在了kafka-client包内。然后我们尝试第一种方式,直接通过java代码调用scala代码的main方法:

    public static void main(String[] args) throws NoSuchAlgorithmException {

    long a = System.currentTimeMillis();

        kafka.admin.ConfigCommand.main(args);

        long b = System.currentTimeMillis();

        System.out.println(b-a);

        }

        参数传递与命令行方式一样:

        --zookeeper 172.30.233.149:2181 --alter --add-config SCRAM-SHA-256=[iterations=8192,password=cons-sec],SCRAM-SHA-512=[password=cons-sec] --entity-type users --entity-name consumer

    本地main方法执行后,发现耗时很长,需要4-5s时间。

    然后继续深入查看kafka.admin.ConfigCommand的源代码,其对entity-type users的情况大体思路是本地生成相应的加解密需要的相关信息,然后操作zk,所以就有了第二种方式的尝试。我们自己生产加密信息串,然后自己操作zk。

    如下:

    salt=aTM5MzJkYnJncXZib2pzb3l0b3kwaGJybg==,stored_key=KiMC/9Utm/9GIG2QQ/WY+CyqmiYq379QmucRMCDYWZc=,server_key=kiKf8pEwVNRM2r+ZQsyzQ2dlpGb6dWqZyj3+FqLksiQ=,iterations=8192

    java代码如下:

    ScramFormatter formatter = new ScramFormatter(ScramMechanism.SCRAM_SHA_256);

    ScramCredential scramCredential = formatter.generateCredential("admin-sec", 8192);

    String s = ScramCredentialUtils.credentialToString(scramCredential);

    此种方式有待验证。

    相关文章

      网友评论

          本文标题:Kafka AdminClient配置SCRAM

          本文链接:https://www.haomeiwen.com/subject/uurarltx.html