【问题标题】:Apache Drill - DrillStartupException with CustomAuthenticaorApache Drill - 带有 CustomAuthenticaor 的 DrillStartupException
【发布时间】: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


    【解决方案1】:

    原来是 Drill Side 的文档问题。 https://issues.apache.org/jira/browse/DRILL-4461

    Jira 上方有解决问题的方法。应使用 Drill-module.conf 创建自定义身份验证器的新 jar,以便类路径扫描器获取它

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      • 2020-01-05
      相关资源
      最近更新 更多