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?

Reply via email to