【发布时间】:2016-03-02 13:29:36
【问题描述】:
我尝试通过基于以下源代码和钻取配置创建 jar 来使用钻取 1.5.0 创建自定义身份验证器。我把罐子放在$DRILLHOME/jars/
drill-override.conf文件:
drill.exec: {
cluster-id: "drillbits1",
zk.connect: "host1:2181,host2:2181,host3:2181"
security.user.auth: {
enabled: true,
packages += “myorg.drill.security",
impl: “sso"
}
}
DrillMyUserAuthenticator班级:
package myorg.drill.security;
import myorg.drill.security.SSOFilter;
import myorg.drill.security.SecurityServiceException;
import org.apache.drill.common.config.DrillConfig;
import org.apache.drill.exec.exception.DrillbitStartupException;
import org.apache.drill.exec.rpc.user.security.UserAuthenticationException;
import org.apache.drill.exec.rpc.user.security.UserAuthenticator;
import org.apache.drill.exec.rpc.user.security.UserAuthenticatorTemplate;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
@UserAuthenticatorTemplate(type = “sso")
public class DrillMyUserAuthenticator implements UserAuthenticator {
private String ipAddress;
public void setup(DrillConfig drillConfig) throws DrillbitStartupException {
try {
ipAddress= InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
throw new DrillbitStartupException(e);
}
}
public void authenticate(String userName, String password) throws UserAuthenticationException {
try {
SSOFilter.setSourceAddress(ipAddress);
SSOFilter.authenticate(userName, password);
} catch (SecurityServiceException e) {
e.printStackTrace();
throw new UserAuthenticationException(e.getMessage());
}
}
public void close() throws IOException {
}
}
我遇到了以下异常:
线程 "main" org.apache.drill.exec.exception.DrillbitStartupException 中的异常:在 Drillbit 中初始化值时失败。
在 org.apache.drill.exec.server.Drillbit.start(Drillbit.java:277)
在 org.apache.drill.exec.server.Drillbit.start(Drillbit.java:261)
在 org.apache.drill.exec.server.Drillbit.main(Drillbit.java:257)
原因:org.apache.drill.exec.exception.DrillbitStartupException: 找不到类型 'sso' 的 'org.apache.drill.exec.rpc.user.security.UserAuthenticator' 的实现
在 org.apache.drill.exec.rpc.user.security.UserAuthenticatorFactory.createAuthenticator(UserAuthenticatorFactory.java:103)
在 org.apache.drill.exec.rpc.user.UserServer.(UserServer.java:80)
在 org.apache.drill.exec.service.ServiceEngine.(ServiceEngine.java:79)
在 org.apache.drill.exec.server.Drillbit.(Drillbit.java:89)
在 org.apache.drill.exec.server.Drillbit.start(Drillbit.java:275)
如果我缺少配置或代码的某些内容,请告诉我。
我跟随 Drill's documentation 创建了这个。
【问题讨论】:
标签: apache-drill