我試圖通過創建基於下面的源代碼和鑽取配置的jar創建一個自定義的認證與Drill 1.5.0。我放在罐子中$DRILLHOME/jars/
Apache Drill - DrillStartupException與CustomAuthenticaor
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 {
}
}
而且我得到異常下面:
例外在線程 「主要」 組織.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:無法找到執行'org.apache.drill.exec.rpc.user.security.UserAuthenticator'類型'sso'
at org.apa che.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)
at org.apache.drill.exec.server.Drillbit.start(Drillbit.java:275)
如果我錯過配置或代碼,請讓我知道。
我跟着Drill's documentation來創建這個。