Hi, Since you have enabled PLAIN authentication in configuration using libpam4j you have to pass username and password from client to authenticate. The way embedded mode in Drill works is running an embedded Drillbit within sqlline client. Hence to connect using embedded mode you have to pass username and password in command line like below:
./drill-embedded -n <local_username> -p <password> Thanks, Sorabh ________________________________ From: cupen noruler <[email protected]> Sent: Thursday, June 21, 2018 4:55:57 AM To: [email protected] Subject: A problem about "Using libpam4j as the PAM Authenticator ." Hello guys. I'm a newbie at apache-drill, The document was great to read, but it's hard to exec. My env: * centos7.4 * openjdk1.8 * apache-drill-1.13.0 My problem. I want to setup auth following "https://urldefense.proofpoint.com/v2/url?u=https-3A__drill.apache.org_&d=DwIBaQ&c=cskdkSMqhcnjZxdQVpwTXg&r=gRpEl0WzXE3EMrwj0KFbZXGXRyadOthF2jlYxvhTlQg&m=EHL1zJCvseAhuiUJP6Li_4u4qtxWW2bVHV9PygEwOzA&s=u75IOjEhOuDwMKlucZ_X8bI0CgM9zFJ3qrt0tYPAulU&e= docs/using-libpam4j-as-the-pam-authenticator/" But it show me a big terrrible infomation when I start it. ``` > bin/drill-embedded Jun 21, 2018 7:33:24 PM org.glassfish.jersey.server.ApplicationHandler initialize INFO: Initiating Jersey application, version Jersey: 2.8 2014-04-29 01:25:26... Jun 21, 2018 7:33:25 PM org.glassfish.jersey.internal.Errors logErrors WARNING: The following warnings have been detected: HINT: A HTTP GET method, public void org.apache.drill.exec.server.rest.LogInLogOutResources. logout(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws java.lang.Exception, returns a void type. It can be intentional and perfectly fine, but it is a little uncommon that GET method returns always "204 No Content". Error: Failure in connecting to Drill: org.apache.drill.exec.rpc.NonTransientRpcException: javax.security.sasl.SaslException: Server requires authentication using [PLAIN]. Insufficient credentials?. [Details: Encryption: disabled , MaxWrappedSize: 65536 , WrapSizeLimit: 0]. (state=,code=0) java.sql.SQLNonTransientConnectionException: Failure in connecting to Drill: org.apache.drill.exec.rpc.NonTransientRpcException: javax.security.sasl.SaslException: Server requires authentication using [PLAIN]. Insufficient credentials?. [Details: Encryption: disabled , MaxWrappedSize: 65536 , WrapSizeLimit: 0]. at org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>( DrillConnectionImpl.java:179) at org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection( DrillJdbc41Factory.java:73) at org.apache.drill.jdbc.impl.DrillFactory.newConnection( DrillFactory.java:69) at org.apache.calcite.avatica.UnregisteredDriver.connect( UnregisteredDriver.java:138) at org.apache.drill.jdbc.Driver.connect(Driver.java:72) at sqlline.DatabaseConnection.connect(DatabaseConnection.java:168) at sqlline.DatabaseConnection.getConnection( DatabaseConnection.java:214) at sqlline.Commands.connect(Commands.java:1083) at sqlline.Commands.connect(Commands.java:1015) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sqlline.ReflectiveCommandHandler.execute( ReflectiveCommandHandler.java:36) at sqlline.SqlLine.dispatch(SqlLine.java:742) at sqlline.SqlLine.initArgs(SqlLine.java:528) at sqlline.SqlLine.begin(SqlLine.java:596) at sqlline.SqlLine.start(SqlLine.java:375) at sqlline.SqlLine.main(SqlLine.java:268) Caused by: org.apache.drill.exec.rpc.NonTransientRpcException: javax.security.sasl.SaslException: Server requires authentication using [PLAIN]. Insufficient credentials?. [Details: Encryption: disabled , MaxWrappedSize: 65536 , WrapSizeLimit: 0]. at org.apache.drill.exec.rpc.user.UserClient.connect( UserClient.java:207) at org.apache.drill.exec.client.DrillClient.connect( DrillClient.java:458) at org.apache.drill.exec.client.DrillClient.connect( DrillClient.java:402) at org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>( DrillConnectionImpl.java:170) ... 18 more ``` My config file: `conf/drill-override.conf` ``` drill.exec: { cluster-id: "drillbits1", zk.connect: "localhost:2181", impersonation: { enabled: true, max_chained_user_hops: 3 }, security: { auth.mechanisms: [ "PLAIN"] }, security.user.auth: { enabled: true, packages += "org.apache.drill.exec.rpc.user.security", impl: "pam4j", pam_profiles: [ "sudo", "login" ] } } ``` Could someone help me?
