SASL_PLAINTEXT 实现认证
1. server.properties中添加:

listeners=SASL_PLAINTEXT://hostname:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN

2. config目录下新建三个文件:

kafka_server_jaas.conf

KafkaServer {
        org.apache.kafka.common.security.plain.PlainLoginModule required
        username="admin"
        password="admin-pwd"
        user_admin="admin-pwd"
        user_alice="alice-pwd"
        user_bob="bob-pwd";
};
kafka_cilent_jaas.conf

KafkaClient {
        org.apache.kafka.common.security.plain.PlainLoginModule required
        username="alice"
        password="alice-pwd";
};
kafka_zoo_jaas.conf

zookeeper {
        org.apache.kafka.common.security.plain.PlainLoginModule required
        username="admin"
        password="admin-pwd";
};

3. 修改kafka各项sh脚本 
zookeeper-server-start.sh中添加(要在最后一行之前添加,别添加在最后一行了):

export KAFKA_OPTS=" -Djava.security.auth.login.config=/home/ocdc/app/kafka_2.10-0.10.1.1/config/kafka_zoo_jaas.conf"

kafka-server-start.sh中添加:

export KAFKA_OPTS=" -Djava.security.auth.login.config=/home/ocdc/app/kafka_2.10-0.10.1.1/config/kafka_server_jaas.conf"

kafka-console-consumer.sh和kafka-console-producer.sh中添加:

export KAFKA_OPTS=" -Djava.security.auth.login.config=/home/ocdc/app/kafka_2.10-0.10.1.1/config/kafka_client_jaas.conf"

4.启动zookeeper 和Kafka集群

上述步骤,为集群添加了SASL_PLAINTEXT认证。Kafka Server间/Kafka和ZK间,利用admin账号互联。

同时Kafka Server还保留了两个普通用户:alice和bob,密码分别为alice-pwd,bob-pwd。

5.测试

利用kafka-console-consumer.sh和kafka-console-producer.sh,同时修改kafka_cilent_jaas.conf中的用户名和密码,测试认证机制是否生效。

Kafka-ACL实现权限控制
1. server.properties中添加:

authorizer.class.name = kafka.security.auth.SimpleAclAuthorizer
super.users=User:admin

Kafka Server间是使用admin账号互联的,使用得把admin配为超级账号

2. 重启Kafka集群

3.利用kafka-acls.sh为topic设置ACL

sh kafka-acls.sh --authorizer-properties zookeeper.connect=hostname:2181 --add --allow-principal  User:alice  --group test-consumer-group --topic alice-topic

这里注意,如果alice要作为消费端连接alice-topic的话,必须对其使用的group(test-consumer-group)也赋权

4. 利用kafka-acls.sh设置不同的权限,同时修改kafka_cilent_jaas.conf中的用户名和密码,验证ACL和认证机制。

JAVA producer端示例
public class NewProducer
{
    public static void main(String[] args) throws IOException
    {
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("security.protocol","SASL_PLAINTEXT");
        props.put("sasl.mechanism","PLAIN");
        props.put("key.serializer",
                "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer",
                "org.apache.kafka.common.serialization.StringSerializer");
 
        Producer<String, String> producer = new KafkaProducer<>(props);
        System.out.println("send msg");
        producer.send(
                new ProducerRecord<String, String>("topic_name", "123123123"));
        System.out.println("send one msg : 123123123");
        producer.close();
    }
}
 
————————————————
版权声明:本文为CSDN博主「wsrmzqy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wsrmzqy/article/details/72190242

Kafka使用SASL_PLAINTEXT实现简易的用户认证及权限相关推荐

  1. 超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)

    用户认证.权限.安全 原 理 与 实 践 作者: jcLee95 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.net/qq_28550263?spm ...

  2. SpringtBoot+SpringSecurity+Jwt+MyBatis整合实现用户认证以及权限控制

    文章目录 前言 数据库表结构 项目结构图 核心配置类SecurityConfig 实体类 工具类 用户登录认证 Token令牌验证 获取用户权限 用户权限验证 Service层实现类 统一响应类 Co ...

  3. Spring Security用户认证和权限控制(默认实现)

    1 背景 实际应用系统中,为了安全起见,一般都必备用户认证(登录)和权限控制的功能,以识别用户是否合法,以及根据权限来控制用户是否能够执行某项操作. Spring Security是一个安全相关的框架 ...

  4. 企业级项目|用Python进行web开发企业统一用户认证和权限控制平台

    目前大家对Python的了解更多来源是数据分析.Ai.运维工具开发,在行业中使用Python进行web开发,同样也是非常受欢迎的,例如:FaceBook,豆瓣,知乎,饿了么等等,本文主要是介绍是利用P ...

  5. Samba服务器原理及实验搭建(匿名共享,用户认证,权限设置,IP限制,目录挂载,桌面运维)

    本文目录 Samba服务器概念与原理 一.引子 二.samba原理及基本概念 三.samba共享实验搭建(匿名共享,用户认证,权限设置,IP限制,目录挂载,桌面运维) Samba服务器概念与原理 一. ...

  6. Spring Boot整合Shiro + JSP教程(用户认证,权限管理,图片验证码)

    在此首先感谢**编程不良人**up主提供的视频教程 代码都是跟着up的视频敲的,遇到的一些问题也是通过CSDN博主提供的教程解决的,在此也感谢那些提供bug解决方案的前辈们~ 项目完整代码已经发布到g ...

  7. Django默认用户认证系统和用户模型类

    Django默认用户认证系统和用户模型类 1.Django默认用户认证系统 Django自带用户认证系统 Django认证系统位置 Django认证系统同时处理认证和授权 Django认证系统包含的内 ...

  8. Java-SpringBoot:用户认证(Authentication)和用户授权(Authorization)

    Java-SpringBoot-2 学习视频:B站 狂神说Java – https://www.bilibili.com/video/BV1PE411i7CV 学习文档: 微信公众号 狂神说 –htt ...

  9. 用Python建设企业认证和权限控制平台

    目前大家对Python的了解更多来源是数据分析.AI.运维工具开发,在行业中使用Python进行web开发,同样也是非常受欢迎的,例如:FaceBook,豆瓣,知乎,饿了么等等,本文主要是介绍是利用P ...

最新文章

  1. 返回一个二维整数数组中的最大的子数组和
  2. 一道简单的编程题考核你的编程功底
  3. 浅析Postgres中的并发控制(Concurrency Control)与事务特性(上)
  4. 图解使用Win8Api进行Metro风格的程序开发二----使用文件选择器访问和保存文件
  5. house price model
  6. python定义一个类savingaccount表示银行账户_c#教程之c#模拟银行atm机示例分享
  7. SingToken全球首款区块链智能AI音乐钱包
  8. 跨考大连理工大学计算机考研,如何备战大连理工大学的计算机考研_跨考网
  9. Android odex反编译为dex
  10. 内存泄露之常见问题解决「初级篇」
  11. XX公司信息化建设草案
  12. java删除表格_Java 删除Word表格/表格内容
  13. Mysql官方接口中文解释
  14. STN:Spatial Transformer Networks 空间变换网络
  15. java随机不重复点名_怎样用java做一个点名器,除重复,并且用键盘输入
  16. linux sox用法 播放,SoX——linux终端播放音频文件
  17. S3C2440 由ADS移植到 RealView MDK kile4
  18. java 限制输入两位数_Java 控制数字输入、控制输入长度的方法 | 学步园
  19. git 教程(12)--分支管理
  20. Android 全埋点方案盘点

热门文章

  1. 开发者集合丨游戏背后的“数学”本质?听听零零后主程怎么说
  2. Linux网络数据包接收处理过程
  3. composer安装和常用操作
  4. 简单理解结构体的内存对齐
  5. ab测试工具参数详解
  6. 在tomcat8.0.x和tomcat9.0.x之间么突然冒出个tomcat 8.5
  7. 刷前端面经笔记(三)
  8. 阿里云怎样配置数据库服务器配置?
  9. X里、X迅、X团、X度、X手的面试总结
  10. 关于powerbi加载不了地图异常解决方法