如何为Kafka Connect服务单独配置启用身份认证
Kafka Connect REST接口单独开启Basic认证配置方案
该需求完全可以实现,你之前的配置未生效主要是配置项拼写错误、缺少文件挂载、权限配置缺失三个问题,修正步骤如下:
1. 核心错误点排查
你之前使用的配置项CONNECT_REST_EXTENSION_CLASS拼写错误,正确配置项为带复数后缀的CONNECT_REST_EXTENSION_CLASSES,这是该场景下最常见的配置失效原因。
2. 完整docker-compose配置修改
在官方cp-all-in-one的docker-compose.yml中,找到connect服务的配置段,新增/修改如下内容:
services: connect: # 原有配置全部保留,新增以下环境变量和挂载配置 environment: # 正确的REST扩展类配置项 CONNECT_REST_EXTENSION_CLASSES: org.apache.kafka.connect.rest.basic.auth.extension.BasicAuthSecurityRestExtension KAFKA_OPTS: "-Djava.security.auth.login.config=/opt/kafka/secrets/connect_jaas.conf" # --------------- 可选:如需同时开启SSL加密传输,新增以下配置 --------------- # CONNECT_LISTENERS: "https://0.0.0.0:8083" # CONNECT_REST_ADVERTISED_LISTENER: "https://connect:8083" # CONNECT_SSL_KEYSTORE_LOCATION: /opt/kafka/secrets/keystore.jks # CONNECT_SSL_KEYSTORE_PASSWORD: 你的keystore密码 volumes: # 把本地存放认证文件的目录(示例为当前目录下的secrets文件夹)挂载到容器内指定路径 - ./secrets:/opt/kafka/secrets
3. 本地认证文件配置
在docker-compose.yml同级目录新建secrets文件夹,存放三个认证相关文件:
connect_jaas.conf:你的原有配置正确,直接保留即可
KafkaConnect { org.apache.kafka.connect.rest.basic.auth.extension.PropertyFileLoginModule required file="/opt/kafka/secrets/rest-credentials.password"; };
rest-credentials.password:你的原有账号密码配置正确,需要额外给该文件开启读权限,本地执行chmod 644 ./secrets/rest-credentials.password避免容器内读取失败
random=pass123
- (可选)如果开启SSL,把你的SSL证书keystore.jks文件也放入secrets目录即可
4. 验证配置生效
重启connect容器后执行以下命令验证:
- 不带认证的请求返回401状态码:
curl http://localhost:8083/connectors - 携带正确账号密码的请求正常返回结果:
curl -u random:pass123 http://localhost:8083/connectors
该认证仅作用于Connect服务8083端口的REST接口,不会影响Connect和后端无认证Kafka集群的通信,完全符合需求。
内容的提问来源于stack exchange,提问作者RandomUser
相关产品推荐
相关产品推荐

