2016-03-01 77 views
0

我試圖通過創建基於下面的源代碼和鑽取配置的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來創建這個。

回答

0

原來是Drill Side上的文檔問題。 https://issues.apache.org/jira/browse/DRILL-4461

以上吉拉是爲了解決該problem.New罐子應該鑽module.conf創建自定義的驗證器類路徑掃描器把它撿起來

drill: { 
    classpath.scanning: { 
    packages: [ 
    "myorg.drill.security" 
    ] 
    } 
}