Heroku环境Kafka Connect REST API添加Basic Auth配置问题咨询
疑问解答
- 关于
KAFKA_SECURITY_PROTOCOL参数:无需修改。该参数仅控制Kafka Connect worker与Kafka broker之间的通信安全协议,和REST API的认证逻辑完全独立。你保持SSL配置即可,不需要在broker端启用SASL——REST API的Basic Auth是Connect服务侧的扩展能力,和broker侧的SASL配置没有任何关联。 - 关于使用
appuser用户运行服务:该配置本身没有问题,只要appuser对后续提到的JAAS配置文件、凭证文件拥有读权限,对Connect运行目录有正常读写权限即可,不会影响REST认证功能生效。
现有配置问题排查&正确配置方式
你选用的官方内置BasicAuthSecurityRestExtension是实现REST API用户名密码认证的标准方案,不需要额外安装插件,现有配置存在几处语法和路径错误,修正后即可正常生效:
- 修复JAAS配置文件语法错误
JAAS配置有强制语法要求:每个配置行末尾必须加半角分号,配置块闭合大括号外也要加半角分号。你最初提交的配置缺少闭合引号和分号,调试环境中的配置也缺少必要的分号,正确的connect_jaas.conf内容如下:KafkaConnect { org.apache.kafka.connect.rest.basic.auth.extension.PropertyFileLoginModule required file="/app/rest-credentials.properties"; }; - 修正JVM启动参数
java.security.auth.login.config参数必须指向JAAS文件的完整绝对路径,不能只写目录。你调试环境中实际生效的-Djava.security.auth.login.config=/app/connect_jaas.conf是正确配置,保持该值即可,不要用最初写的/app目录路径。 - 校验配置文件读权限
执行以下命令确认运行服务的appuser能正常读取两个配置文件:
如果读取失败,执行以下命令添加全局读权限即可:su - appuser -c "cat /app/connect_jaas.conf /app/rest-credentials.properties"chmod 644 /app/connect_jaas.conf /app/rest-credentials.properties - 生效验证
所有配置修正后重启Connect服务,通过以下请求验证认证逻辑:# 不带认证信息访问接口,预期返回401 Unauthorized curl -I http://<你的Connect服务地址>:<REST端口>/connectors # 携带正确的用户名密码访问,预期返回200正常响应 curl -u testuser:<对应密码> http://<你的Connect服务地址>:<REST端口>/connectors
补充说明:该内置Basic Auth扩展仅做身份校验,不提供细粒度权限控制,所有通过认证的用户都拥有REST API的全部操作权限。如果需要令牌认证、角色权限管控能力,需要替换为对应的第三方REST扩展实现,这类扩展同样和broker侧安全协议无关,不需要修改
KAFKA_SECURITY_PROTOCOL配置。如果启动日志提示找不到BasicAuthSecurityRestExtension类,请确认你的Kafka Connect版本不低于2.1.0,该内置扩展从2.1.0版本开始正式提供。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

