如何在Apache Drill UI中为自定义认证用户配置管理员权限
问题:Apache Drill自定义认证用户无法设置为管理员
已通过自定义认证器在Apache Drill中启用用户认证,实现了含硬编码用户名密码的认证类,将生成的jar放入/jars目录后,登录界面正常显示且可成功登录。但该用户在Drill UI中无法看到存储插件选项,被判定为非管理员用户。尝试在drill-override.conf中添加配置security.admin.users : "myuser",但未生效。请问如何在Drill中将该用户设置为管理员?
实现的认证类代码
@UserAuthenticatorTemplate(type = "myCustomAuthenticatorType") public class MyCustomDrillUserAuthenticatorImpl implements UserAuthenticator { public static final String USER = "myuser"; public static final String PASSWORD = "mypassword"; @Override public void setup(DrillConfig drillConfig) throws DrillbitStartupException {} @Override public void authenticate(String userName, String password) throws UserAuthenticationException { if (!(USER.equals(userName) && PASSWORD.equals(password)) ) { throw new UserAuthenticationException("Authentication Failed"); } } @Override public void close() throws IOException {} }
drill-override.conf配置
drill.exec { security.user.auth { enabled: true, packages += "myorg.drill.security", impl: "myCustomAuthenticatorType" } auth.mechanisms: ["PLAIN"] }
drill-module.conf配置(已放入jar包)
drill { classpath.scanning { packages += "myorg.drill.security" } }
解决方案
修正配置格式与层级:
security.admin.users是数组类型,且需放置在drill.exec节点下。修改后的drill-override.conf应如下:drill.exec { security.user.auth { enabled: true, packages += "myorg.drill.security", impl: "myCustomAuthenticatorType" } auth.mechanisms: ["PLAIN"] security.admin.users: ["myuser"] }原配置中使用字符串
"myuser"而非数组["myuser"],这是导致配置未生效的核心原因之一。重启Drillbit服务:修改配置后必须重启Drillbit,新的管理员配置才能生效。
校验用户名匹配:确保配置中的用户名
myuser与自定义认证类中硬编码的用户名完全一致(Drill用户名大小写敏感)。检查配置优先级:确认drill-override.conf中的配置未被其他配置文件(如drill-default.conf)覆盖,可通过
drill-conf命令查看最终生效的配置。
内容的提问来源于stack exchange,提问作者Kamal Kumar
相关产品推荐
相关产品推荐

