Hi Xueping,

The drill-module.conf should be put into the your jar file. The logic about
what jar to scan(thus to extract the class) during startup is based on if
there is a drill-module.conf in that jar file. Hope this helps.

Thanks,

Chunhui

On Tue, Mar 29, 2016 at 2:29 AM, xuepingy...@cienet.com.cn <
xuepingy...@cienet.com.cn> wrote:

> Hi,
> We installed drill-1.6 in distributed mode.
> We are trying to config a custom authenticator ,we do the steps as the
> document shows,but it failed.
> 1,Build the following Java file into a JAR file:
> package myorg.dept.drill.security;
>
> import java.io.IOException;
>
> 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;
>
>
> /*
>  * Implement {@link
> org.apache.drill.exec.rpc.user.security.UserAuthenticator} for illustrating
> how to develop a custom authenticator and use it in Drill
>  */
> @UserAuthenticatorTemplate(type = "myCustomAuthenticatorType")
> public class MyCustomDrillUserAuthenticatorImpl implements
> UserAuthenticator {
>
>  public static final String USER_1 = "user1";
>  public static final String USER_2 = "user2";
>  public static final String PWD_1 = "pwd1";
>  public static final String PWD_2 = "pwd2";
>
>  /**
>   * Setup for authenticating user credentials.
>   */
>  @Override
>  public void setup(DrillConfig drillConfig) throws
> DrillbitStartupException {
>   // If the authenticator has any setup such as making sure authenticator
>   // provider servers are up and running or
>   // needed libraries are available, it should be added here.
>  }
>
>  /**
>   * Authenticate the given <i>user</i> and <i>password</i> combination.
>   *
>   * @param userName
>   * @param password
>   * @throws UserAuthenticationException
>   *             if authentication fails for given user and password.
>   */
>  @Override
>  public void authenticate(String userName, String password)
>    throws UserAuthenticationException {
>   System.out.println("==========enter==========");
>   if (!(USER_1.equals(userName) && PWD_1.equals(password))
>     && !(USER_2.equals(userName) && PWD_2.equals(password))) {
>    throw new UserAuthenticationException(
>      "custom failure message if the admin wants to show it to user");
>   }
>
>
>  }
>
>  /**
>   * Close the authenticator. Used to release resources. Ex. LDAP
>   * authenticator opens connections to LDAP server, such connections
>   * resources are released in a safe manner as part of close.
>   *
>   * @throws IOException
>   */
>  @Override
>  public void close() throws IOException {
>   // Any clean up such as releasing files/network resources should be done
>   // here
>  }
>
>
> }
> 2,Add the jar file to the path: <drill-install-path>/jars
> 3,Create a file named drill-module.conf with the following configuration
> code,and add it to :<drill-install-path>/jars
> drill {
>         classpath.scanning {
>           packages += "myorg.dept.drill.security"
>         }
>       }
> 4,modify the drill-override.conf,add the following configuration code in
> drill.exec block:
> security.user.auth {
>             enabled: true,
>             packages += "myorg.dept.drill.security",
>             impl: "myCustomAuthenticatorType"
>        }
> 5,restart the drill again.
> Then we find that we can't start the drill successfully.Here is the log:
> 2016-03-29 16:49:32,392 [main] ERROR
> o.a.d.e.r.u.s.UserAuthenticatorFactory - Failed to find the implementation
> of 'org.apache.drill.exe
> c.rpc.user.security.UserAuthenticator' for type 'myCustomAuthenticatorType'
> Can you give me some advice?
> Thank you very much.
>
>
> Best Wishes
> Xueping Yang
>
> xuepingy...@cienet.com.cn
>

Reply via email to