Hi Larry,

Well Got over this issue!!! And seeing new issue now and this time looks we
are really close :)

Looks like authentication against A/D is happening ( I am making an
educated guess by seeing logs)* Could you please help me pass this hurdle ?*

I am seeing the following error while trying to access HDFS using curl:

{"RemoteException":{"exception":"SecurityException","javaClassName":"java.lang.SecurityException","message":"*Failed
to obtain user group information:
org.apache.hadoop.security.authorize.AuthorizationException: User: knox is
not allowed to impersonate knox"*}}

I am wondering why this is coming we have already set the knox proxy
configuration in for HDFS. IN custom custom-core site.xml

*hadoop.proxyuser.knox.groups = users*
*hadoop.proxyuser.knox.hosts = KNOX_GATEWAY_HOST_NAME*


*Gateway-audit.log*
15/12/09 17:41:53
||30f55697-1c45-46ac-b186-e4a70f4ee1e8|audit|WEBHDFS|knox|||authentication|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|success|
15/12/09 17:41:53
||30f55697-1c45-46ac-b186-e4a70f4ee1e8|audit|WEBHDFS|knox|||authentication|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|success|Groups:
[]
15/12/09 17:41:53
||30f55697-1c45-46ac-b186-e4a70f4ee1e8|audit|WEBHDFS|knox|||authorization|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|success|
15/12/09 17:41:53
||30f55697-1c45-46ac-b186-e4a70f4ee1e8|audit|WEBHDFS|knox|||dispatch|uri|
http://master01.HDP_CLUSTER:50070/webhdfs/v1/?doAs=knox&op=LISTSTATUS|success|Response
status: 403
15/12/09 17:41:53
||30f55697-1c45-46ac-b186-e4a70f4ee1e8|audit|WEBHDFS|knox|||access|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|success|Response
status: 403


*gateway.lout  (Earlier this file was 0 bytes I believe this captures
authentication details)*

0530: FE 3E 3D 5E AA C9 60 12   D4 14 A3 3D 07 79 09 88  .>=^..`....=.y..
0540: 04 69 F6 89 1F 0F 4F 29   6D 77 F7 9C 83 CB 63 A7  .i....O)mw....c.
0550: 0E CB 1B 2A 8E F6 79 8A   A9 77 97 CB 88 A6        ...*..y..w....

*Gateway.log*

2015-12-09 17:41:44,915 INFO  hadoop.gateway
(KnoxLdapRealm.java:getUserDn(568)) - Computed userDn: CN=knox
knox,CN=Users,DC=test,DC=com using ldapSearch for principal: knox
2015-12-09 17:41:45,711 INFO  hadoop.gateway
(AclsAuthorizationFilter.java:doFilter(85)) - Access Granted: true
2015-12-09 17:41:52,588 INFO  hadoop.gateway
(KnoxLdapRealm.java:getUserDn(568)) - Computed userDn: CN=knox
knox,CN=Users,DC=test,DC=com using ldapSearch for principal: knox
2015-12-09 17:41:53,322 INFO  hadoop.gateway
(AclsAuthorizationFilter.java:doFilter(85)) - Access Granted: true


*Many thanks,*
DP

On 9 December 2015 at 14:12, Darpan Patel <[email protected]> wrote:

>
> Wow.. Larry !!  Yeah, knox is a valid user in the A/D.
> Looks like we are close.
>
> Now different error on the console :
>
> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
> <title>Error 500 Server Error</title>
> </head>
> <body><h2>HTTP ERROR 500</h2>
> <p>Problem accessing /gateway/default/webhdfs/v1/. Reason:
> <pre>    Server Error</pre></p><hr /><i><small>Powered by
> Jetty://</small></i><br/>
> <br/>
> <br/>
> <br/>
>
>
> In the *gateway-audit *file also new log entries.
>
>
> 15/12/09 14:05:51
> ||8efd15c8-5f8a-45dd-8a65-cc3cf4967395|audit|WEBHDFS||||access|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|unavailable|
> 15/12/09 14:05:53
> ||8efd15c8-5f8a-45dd-8a65-cc3cf4967395|audit|WEBHDFS|knox|||authentication|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|success|
> 15/12/09 14:05:53
> ||8efd15c8-5f8a-45dd-8a65-cc3cf4967395|audit|WEBHDFS|knox|||authentication|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|success|Groups:
> []
> 15/12/09 14:05:53
> ||8efd15c8-5f8a-45dd-8a65-cc3cf4967395|audit|WEBHDFS|knox|||authorization|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|success|
> 15/12/09 14:05:53
> ||8efd15c8-5f8a-45dd-8a65-cc3cf4967395|audit|WEBHDFS|knox|||authentication|uri|
> http://master01.HDP_CLUSTER_HOST:50070/webhdfs/v1/?doAs=knox&op=LISTSTATUS|failure|
> 15/12/09 14:05:53
> ||8efd15c8-5f8a-45dd-8a65-cc3cf4967395|audit|WEBHDFS|knox|||dispatch|uri|
> http://master01.HDP_CLUSTER_HOST:50070/webhdfs/v1/?doAs=knox&op=LISTSTATUS|failure|
> 15/12/09 14:05:53
> ||8efd15c8-5f8a-45dd-8a65-cc3cf4967395|audit|WEBHDFS|knox|||dispatch|uri|
> http://master01.HDP_CLUSTER_HOST:50070/webhdfs/v1/?doAs=knox&op=LISTSTATUS|unavailable|
> *15/12/09 14:05:53
> ||8efd15c8-5f8a-45dd-8a65-cc3cf4967395|audit|WEBHDFS|knox|||access|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|failure|*
>
> gateway.log file
>
> 2015-12-09 14:05:51,747 INFO  hadoop.gateway
> (KnoxLdapRealm.java:getUserDn(568)) - Computed userDn: CN=knox
> knox,CN=Users,DC=test,DC=com using ldapSearch for principal: knox
> 2015-12-09 14:05:53,239 INFO  hadoop.gateway
> (KnoxLdapRealm.java:getUserDn(568)) - Computed userDn: CN=knox
> knox,CN=Users,DC=test,DC=com using ldapSearch for principal: knox
> 2015-12-09 14:05:53,239 INFO  hadoop.gateway
> (KnoxLdapRealm.java:rolesFor(255)) - Computed roles/groups: [] for
> principal: knox
> 2015-12-09 14:05:53,240 INFO  hadoop.gateway
> (AclsAuthorizationFilter.java:doFilter(85)) - Access Granted: true
> *2015-12-09 14:05:53,285 ERROR hadoop.gateway
> (AppCookieManager.java:getAppCookie(125)) - Failed Knox->Hadoop
> SPNegotiation authentication for URL:
> http://master01.HDP_CLUSTER_HOST:50070/webhdfs/v1/?doAs=knox&op=LISTSTATUS
> <http://master01.HDP_CLUSTER_HOST:50070/webhdfs/v1/?doAs=knox&op=LISTSTATUS>*
> *2015-12-09 14:05:53,291 WARN  hadoop.gateway
> (DefaultDispatch.java:executeOutboundRequest(129)) - Connection exception
> dispatching request:
> http://master01.HDP_CLUSTER_HOST:50070/webhdfs/v1/?doAs=knox&op=LISTSTATUS
> <http://master01.HDP_CLUSTER_HOST:50070/webhdfs/v1/?doAs=knox&op=LISTSTATUS>
> java.io.IOException: SPNego authn failed, can not get hadoop.auth cookie*
> *java.io.IOException: SPNego authn failed, can not get hadoop.auth cookie*
> *        at
> org.apache.hadoop.gateway.dispatch.AppCookieManager.getAppCookie(AppCookieManager.java:127)*
> 2015-12-09 14:05:53,295 ERROR hadoop.gateway
> (GatewayServlet.java:service(126)) - Gateway processing failed:
> javax.servlet.ServletException:
> org.apache.shiro.subject.ExecutionException:
> java.security.PrivilegedActionException: java.io.IOException: Service
> connectivity error.
> javax.servlet.ServletException:
> org.apache.shiro.subject.ExecutionException:
> java.security.PrivilegedActionException: java.io.IOException: Service
> connectivity error.
>
>
> On 9 December 2015 at 14:00, larry mccay <[email protected]> wrote:
>
>> Try:
>>
>> curl -iv -k -u knox:#123Password -X GET "
>> https://gateway:8443/gateway/default/webhdfs/v1/?op=LISTSTATUS";
>>
>> The above assumes that there is a knox user in your AD.
>>
>> On Wed, Dec 9, 2015 at 8:50 AM, Darpan Patel <[email protected]> wrote:
>>
>>> HI Larry,
>>>
>>> Thanks for quick response. the value of contextFactory I missed
>>> somehow.. Now I don't see the contextFactory undefined error but .... When
>>> I try to curl the default gateway for webhdfs still I am seeing the same
>>> console.
>>>
>>> I tried issuing the following curl command with valid TGT in the cache
>>> and after kdestroy and removing the TGT for both I am seeing the same
>>> output.
>>>
>>> curl -iv -k -u [email protected]:#123Password -X GET "
>>> https://gateway:8443/gateway/default/webhdfs/v1/?op=LISTSTATUS";
>>> also tried
>>> curl -iv -k  -X GET "
>>> https://gateway:8443/gateway/default/webhdfs/v1/?op=LISTSTATUS";
>>>
>>>
>>> I am attaching the default gateway topology file with the email to avoid
>>> lot of texts.
>>>
>>>
>>> In the *gateway.log *I don't see any entry while hitting the curl
>>>
>>> In the *gateway-audit *I see following :
>>>
>>> 15/12/09 13:44:47
>>> ||d96572dd-a988-4392-b7c8-fcf7e1d154f7|audit|WEBHDFS||||access|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|unavailable|
>>> 15/12/09 13:44:48
>>> ||d96572dd-a988-4392-b7c8-fcf7e1d154f7|audit|WEBHDFS||||access|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|success|Response
>>> status: 401
>>>
>>> I am not sure what I am missing!!!
>>>
>>> *Thank you very much for the help.*
>>>
>>> Regards,
>>> DP
>>>
>>>
>>> *Console Output:*
>>>
>>> [root@gateway knox-server]# curl -iv -k -u [email protected]:
>>> KnoxPassword@123 -X GET "
>>> https://gateway:8443/gateway/default/webhdfs/v1/?op=LISTSTATUS";
>>> * About to connect() to gateway port 8443 (#0)
>>> *   Trying 192.168.197.8...
>>> * Connected to gateway (192.168.197.8) port 8443 (#0)
>>> * Initializing NSS with certpath: sql:/etc/pki/nssdb
>>> * skipping SSL peer certificate verification
>>> * SSL connection using TLS_DHE_RSA_WITH_AES_128_CBC_SHA
>>> * Server certificate:
>>> *       subject:
>>> CN=FQDN_OF_My_gateway_HOST,OU=Test,O=Hadoop,L=Test,ST=Test,C=US
>>> *       start date: Nov 27 20:36:22 2015 GMT
>>> *       expire date: Nov 26 20:36:22 2016 GMT
>>> *       common name: FQDN_OF_My_gateway_HOST
>>> *       issuer:
>>> CN=FQDN_OF_My_gateway_HOST,OU=Test,O=Hadoop,L=Test,ST=Test,C=US
>>> * Server auth using Basic with user '[email protected]'
>>> > GET /gateway/default/webhdfs/v1/?op=LISTSTATUS HTTP/1.1
>>> > Authorization: Basic a25veEB0ZXN0LmNvbTojMTIzUGFzc3dvcmQ=
>>> > User-Agent: curl/7.29.0
>>> > Host: gateway:8443
>>> > Accept: */*
>>> >
>>> < HTTP/1.1 401 Unauthorized
>>> HTTP/1.1 401 Unauthorized
>>> * Authentication problem. Ignoring this.
>>> < WWW-Authenticate: BASIC realm="application"
>>> WWW-Authenticate: BASIC realm="application"
>>> < Content-Length: 0
>>> Content-Length: 0
>>> < Server: Jetty(8.1.14.v20131031)
>>> Server: Jetty(8.1.14.v20131031)
>>>
>>> <
>>> * Connection #0 to host gateway left intact
>>>
>>>
>>>
>>>
>>>
>>> On 9 December 2015 at 13:24, larry mccay <[email protected]> wrote:
>>>
>>>> I meant the version of the topology that I sent you.
>>>> Note the order of the following to config items:
>>>>
>>>>              <param>
>>>>                  <name>main.ldapContextFactory</name>
>>>>
>>>>  <value>org.apache.hadoop.gateway.shirorealm.KnoxLdapContextFactory</value>
>>>>              </param>
>>>>
>>>>         <param>
>>>>             <name>main.ldapRealm.contextFactory</name>
>>>>             <value>$ldapContextFactory</value>
>>>>         </param>
>>>>
>>>> Do you have them in that order in the topology that you are using?
>>>>
>>>> On Wed, Dec 9, 2015 at 8:06 AM, Darpan Patel <[email protected]>
>>>> wrote:
>>>>
>>>>> When we keep :
>>>>>
>>>>>                     <param>
>>>>>                         <name>main.ldapRealm.contextFactory</name>
>>>>>                         <value>$ldapContextFactory</value>
>>>>>                     </param>
>>>>>
>>>>> in the log I see that the context Factory object is not defined
>>>>> previously and hence could not be referred. Any idea for AD 2008/2012
>>>>> Windows Server what should be the value?
>>>>>
>>>>> I am knox : 0.6.0.2 version.
>>>>>
>>>>> 2015-12-09 12:39:45,185 ERROR env.EnvironmentLoader
>>>>> (EnvironmentLoader.java:initEnvironment(146)) - Shiro environment
>>>>> initialization failed
>>>>> org.apache.shiro.config.UnresolveableReferenceException: The object
>>>>> with id [ldapContextFactory] has not yet been defined and therefore cannot
>>>>> be referenced.  Please ensure objects are defined in the order in
>>>>> which they should be created and made available for future reference.
>>>>>
>>>>> Many thanks,
>>>>> DP
>>>>>
>>>>>
>>>>>
>>>>> On 9 December 2015 at 07:58, Darpan Patel <[email protected]> wrote:
>>>>>
>>>>>> Hi Larry,
>>>>>>
>>>>>> I am using the version : 0.6.0.2.3.0.0-2557 of Knox .
>>>>>>
>>>>>>
>>>>>> Checked through  curl -u admin:admin-password -i -k
>>>>>> https://localhost:8443/gateway/admin/api/v1/version
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 8 December 2015 at 23:42, larry mccay <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> In the version that I sent you the main.ldapContextFactory is set
>>>>>>> before this entry.
>>>>>>> Is that true in the version that you are using?
>>>>>>>
>>>>>>> On Tue, Dec 8, 2015 at 5:16 PM, Darpan Patel <[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Well when I am keeping the param to the following value we get an
>>>>>>>> error.
>>>>>>>>
>>>>>>>>      <param>
>>>>>>>>>             <name>main.ldapRealm.contextFactory</name>
>>>>>>>>>             <value>$ldapContextFactory</value>
>>>>>>>>>         </param>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> Copying from the gateway.log. (It made me think we need to define
>>>>>>>> the value for ldapContextFactory)
>>>>>>>>
>>>>>>>> 2015-12-08 22:13:58,003 ERROR env.EnvironmentLoader
>>>>>>>> (EnvironmentLoader.java:initEnvironment(146)) - Shiro environment
>>>>>>>> initialization failed
>>>>>>>> org.apache.shiro.config.UnresolveableReferenceException: *The
>>>>>>>> object with id [ldapContextFactory] has not yet been defined and 
>>>>>>>> therefore
>>>>>>>> cannot be referenced. * Please ensure objects are defined in the
>>>>>>>> order in which they should be created and made available for future
>>>>>>>> reference.
>>>>>>>>         at
>>>>>>>> org.apache.shiro.config.ReflectionBuilder.getReferencedObject(ReflectionBuilder.java:224)
>>>>>>>>         at
>>>>>>>> org.apache.shiro.config.ReflectionBuilder.resolveReference(ReflectionBuilder.java:239)
>>>>>>>>
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> DP
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Dec 8, 2015 at 4:59 PM, Darpan Patel <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Thanks for the merged template. I made modifications to it and
>>>>>>>>>>
>>>>>>>>>> I am not sure what value should I fill
>>>>>>>>>> for main.ldapRealm.contextFactory ?
>>>>>>>>>> We are running on windows 2008/2012 Active directory.
>>>>>>>>>>
>>>>>>>>>>      <param>
>>>>>>>>>>            <name>main.ldapRealm.contextFactory</name>
>>>>>>>>>>            <value>$ldapContextFactory</value>
>>>>>>>>>>        </param>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> I think that you leave it exactly like that.
>>>>>>>>> It is some sort of shiro injection thing - it references the value
>>>>>>>>> defined above it that way.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> I removed this parameter and I see the in the logs:
>>>>>>>>>>
>>>>>>>>>> 2015-12-08 21:56:51,806 ERROR hadoop.gateway
>>>>>>>>>> (KnoxLdapRealm.java:getUserDn(574)) - Failed to get system ldap 
>>>>>>>>>> connection:
>>>>>>>>>> javax.naming.AuthenticationException: [LDAP: error code 49 - 
>>>>>>>>>> 80090308:
>>>>>>>>>> LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 
>>>>>>>>>> 52e,
>>>>>>>>>> v1db1]
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ( I am happy to see new error after 3 days phew!!!)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> Glad that you are happy but let's getting working and see how you
>>>>>>>>> feel. :)
>>>>>>>>> We'll also roll it into some better documentation for the AD
>>>>>>>>> specific usecase.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> DP
>>>>>>>>>>
>>>>>>>>>> On 8 December 2015 at 14:52, Darpan Patel <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Thanks Larray.
>>>>>>>>>>> I will check this and update you.
>>>>>>>>>>>
>>>>>>>>>>> Regards,
>>>>>>>>>>> DP
>>>>>>>>>>>
>>>>>>>>>>> On 8 December 2015 at 12:18, larry mccay <[email protected]>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Darpan -
>>>>>>>>>>>>
>>>>>>>>>>>> The following topology is probably a better starting point for
>>>>>>>>>>>> you AD configuration - I've tried to merge yours with it as best I 
>>>>>>>>>>>> can:
>>>>>>>>>>>>
>>>>>>>>>>>> <gateway>
>>>>>>>>>>>>          <provider>
>>>>>>>>>>>>              <role>authentication</role>
>>>>>>>>>>>>              <name>ShiroProvider</name>
>>>>>>>>>>>>              <enabled>true</enabled>
>>>>>>>>>>>>              <param>
>>>>>>>>>>>>                  <name>sessionTimeout</name>
>>>>>>>>>>>>                  <value>30</value>
>>>>>>>>>>>>              </param>
>>>>>>>>>>>>              <param>
>>>>>>>>>>>>                  <name>main.ldapRealm</name>
>>>>>>>>>>>>
>>>>>>>>>>>>  <value>org.apache.hadoop.gateway.shirorealm.KnoxLdapRealm</value>
>>>>>>>>>>>>              </param>
>>>>>>>>>>>>
>>>>>>>>>>>>              <param>
>>>>>>>>>>>>                  <name>main.ldapContextFactory</name>
>>>>>>>>>>>>
>>>>>>>>>>>>  
>>>>>>>>>>>> <value>org.apache.hadoop.gateway.shirorealm.KnoxLdapContextFactory</value>
>>>>>>>>>>>>              </param>
>>>>>>>>>>>>
>>>>>>>>>>>>        <param>
>>>>>>>>>>>>            <name>main.ldapRealm.contextFactory</name>
>>>>>>>>>>>>            <value>$ldapContextFactory</value>
>>>>>>>>>>>>        </param>
>>>>>>>>>>>>        <param>
>>>>>>>>>>>>            <name>main.ldapRealm.contextFactory.url</name>
>>>>>>>>>>>>            <!-- ADJUST host, port for your AD setup-->
>>>>>>>>>>>>            <value>ldap://IP_OF_WINDOWS_AD:389</value>
>>>>>>>>>>>>        </param>
>>>>>>>>>>>>             <!-- ignored due to use of
>>>>>>>>>>>> main.ldapRealm.userSearchAttributeName -->
>>>>>>>>>>>> <param>
>>>>>>>>>>>>                  <name>main.ldapRealm.userDnTemplate</name>
>>>>>>>>>>>>                  <value>cn={0},CN=users,DC=test,DC=com</value>
>>>>>>>>>>>>                  <!-- also tried following values -->
>>>>>>>>>>>>                  <value>uid={0},CN=users,DC=test,DC=com</value>
>>>>>>>>>>>>               <value>cn={0},DC=test,DC=com</value>
>>>>>>>>>>>>              </param>
>>>>>>>>>>>>
>>>>>>>>>>>>        <!-- Param above is ignored sAMAccount is usually used
>>>>>>>>>>>> for AD -->
>>>>>>>>>>>> <param>
>>>>>>>>>>>> <name>main.ldapRealm.userSearchAttributeName</name>
>>>>>>>>>>>> <value>sAMAccountName</value>
>>>>>>>>>>>> </param>
>>>>>>>>>>>>
>>>>>>>>>>>> <!-- adjust as appropriate -->
>>>>>>>>>>>> <param>
>>>>>>>>>>>> <name>main.ldapRealm.userObjectClass</name>
>>>>>>>>>>>> <value>person</value>
>>>>>>>>>>>> </param>
>>>>>>>>>>>>
>>>>>>>>>>>> <!-- adjust the dn below to match your environment -->
>>>>>>>>>>>> <param>
>>>>>>>>>>>> <name>main.ldapRealm.contextFactory.systemUsername</name>
>>>>>>>>>>>>
>>>>>>>>>>>> <value>cn={systemuser},ou=process,ou=accounts,dc=test,dc=com</value>
>>>>>>>>>>>> </param>
>>>>>>>>>>>>
>>>>>>>>>>>> <!-- should be moved to the credential store for the gateway to
>>>>>>>>>>>> be more secure -->
>>>>>>>>>>>> <param>
>>>>>>>>>>>> <name>main.ldapRealm.contextFactory.systemPassword</name>
>>>>>>>>>>>> <value>{systemuser_password}/value>
>>>>>>>>>>>> </param>
>>>>>>>>>>>>
>>>>>>>>>>>>              <!-- let's disable for now since you have no
>>>>>>>>>>>> authorization policies defined anyway -->
>>>>>>>>>>>> <param>
>>>>>>>>>>>>                <name>main.ldapRealm.authorizationEnabled</name>
>>>>>>>>>>>>                <value>false</value>
>>>>>>>>>>>>              </param>
>>>>>>>>>>>>
>>>>>>>>>>>>              <param>
>>>>>>>>>>>>                <name>main.ldapRealm.searchBase</name>
>>>>>>>>>>>>                <value>cn=users,dc=test,dc=com</value>
>>>>>>>>>>>>              </param>
>>>>>>>>>>>>
>>>>>>>>>>>> <param>
>>>>>>>>>>>>
>>>>>>>>>>>> <param>
>>>>>>>>>>>>
>>>>>>>>>>>>  <name>main.ldapRealm.memberAttributeValueTemplate</name>
>>>>>>>>>>>>                <value>cn={0},cn=users,dc=test,dc=com</value>
>>>>>>>>>>>>                <!-- also tried uid={0} -->
>>>>>>>>>>>>              </param>
>>>>>>>>>>>>
>>>>>>>>>>>> <param>
>>>>>>>>>>>>
>>>>>>>>>>>>  <name>main.ldapRealm.contextFactory.authenticationMechanism</name>
>>>>>>>>>>>>                  <value>simple</value>
>>>>>>>>>>>>              </param>
>>>>>>>>>>>>
>>>>>>>>>>>>              <param>
>>>>>>>>>>>>                  <name>urls./**</name>
>>>>>>>>>>>>                  <value>authcBasic</value>
>>>>>>>>>>>>              </param>
>>>>>>>>>>>>            </provider>
>>>>>>>>>>>>
>>>>>>>>>>>>          <!-- the group principal mapping below is not likely
>>>>>>>>>>>> what you want
>>>>>>>>>>>>    note that mapping of the hdfs group to admin. Also, we have
>>>>>>>>>>>>               disabled authorization above so there is no need
>>>>>>>>>>>> for groups -->
>>>>>>>>>>>> <provider>
>>>>>>>>>>>>              <role>identity-assertion</role>
>>>>>>>>>>>>              <name>Default</name>
>>>>>>>>>>>>              <enabled>true</enabled>
>>>>>>>>>>>>               <!--param>
>>>>>>>>>>>>   <name>group.principal.mapping</name>
>>>>>>>>>>>>   <value>*=users;hdfs=admin</value>
>>>>>>>>>>>>  </param-->
>>>>>>>>>>>>          </provider>
>>>>>>>>>>>>
>>>>>>>>>>>>          <provider>
>>>>>>>>>>>>              <role>authorization</role>
>>>>>>>>>>>>              <name>AclsAuthz</name>
>>>>>>>>>>>>              <enabled>true</enabled>
>>>>>>>>>>>>          </provider>
>>>>>>>>>>>>
>>>>>>>>>>>>     </gateway>
>>>>>>>>>>>>
>>>>>>>>>>>> We need to better document the difference between LDAP and AD
>>>>>>>>>>>> for such deployments.
>>>>>>>>>>>>
>>>>>>>>>>>> I've also tried to document some of the changes that I made.
>>>>>>>>>>>> Note that you don't have any authorization ACLs defined in the
>>>>>>>>>>>> AclsAuthz provider so I disabled group lookup.
>>>>>>>>>>>> That will only add complexity to your config - we can re-enable
>>>>>>>>>>>> once authentication is working.
>>>>>>>>>>>>
>>>>>>>>>>>> Please go through this config and ensure that DNs, host and
>>>>>>>>>>>> ports and system usernames match your environment.
>>>>>>>>>>>>
>>>>>>>>>>>> Hope this helps.
>>>>>>>>>>>>
>>>>>>>>>>>> --larry
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Dec 8, 2015 at 5:16 AM, Darpan Patel <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>>
>>>>>>>>>>>>> For this blocker issue let more information if it can help
>>>>>>>>>>>>> fixing the authorization problem.
>>>>>>>>>>>>> Please let me know if more details required.
>>>>>>>>>>>>> (+ dev list)
>>>>>>>>>>>>>
>>>>>>>>>>>>> */etc/krb5.conf*
>>>>>>>>>>>>>
>>>>>>>>>>>>> [libdefaults]
>>>>>>>>>>>>>   renew_lifetime = 7d
>>>>>>>>>>>>>   forwardable = true
>>>>>>>>>>>>>   default_realm = HORTONWORKS.COM
>>>>>>>>>>>>>   ticket_lifetime = 24h
>>>>>>>>>>>>>   dns_lookup_realm = false
>>>>>>>>>>>>>   dns_lookup_kdc = false
>>>>>>>>>>>>>   #default_tgs_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
>>>>>>>>>>>>>   #default_tkt_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
>>>>>>>>>>>>>
>>>>>>>>>>>>> [domain_realm]
>>>>>>>>>>>>>   .hortonworks.com = HORTONWORKS.COM
>>>>>>>>>>>>>    HORTONWORKS.COm = HORTONWORKS.COM
>>>>>>>>>>>>>
>>>>>>>>>>>>> [logging]
>>>>>>>>>>>>>   default = FILE:/var/log/krb5kdc.log
>>>>>>>>>>>>>   admin_server = FILE:/var/log/kadmind.log
>>>>>>>>>>>>>   kdc = FILE:/var/log/krb5kdc.log
>>>>>>>>>>>>>
>>>>>>>>>>>>> [realms]
>>>>>>>>>>>>>   HORTONWORKS.COM = {
>>>>>>>>>>>>>     admin_server = KDC_SERVER_HOST
>>>>>>>>>>>>>     kdc = KDC_SERVER_HOST
>>>>>>>>>>>>>   }
>>>>>>>>>>>>>   *TEST.COM <http://TEST.COM>* = {
>>>>>>>>>>>>>     admin_server = WINDOWS_12_SERVER_AD_HOST
>>>>>>>>>>>>>     kdc = WINDOWS_12_SERVER_AD_HOST
>>>>>>>>>>>>>   }
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> */usr/hdp/current/knox-server/conf/gateway-site.xml*
>>>>>>>>>>>>>
>>>>>>>>>>>>> <configuration>
>>>>>>>>>>>>>     <property>
>>>>>>>>>>>>>       <name>*gateway.gateway.conf.dir*</name>
>>>>>>>>>>>>>       <value>deployments</value>
>>>>>>>>>>>>>     </property>
>>>>>>>>>>>>>     <property>
>>>>>>>>>>>>>       <name>*gateway.hadoop.kerberos.secured*</name>
>>>>>>>>>>>>>       <value>true</value>
>>>>>>>>>>>>>     </property>
>>>>>>>>>>>>>     <property>
>>>>>>>>>>>>>       <name>*gateway.path*</name>
>>>>>>>>>>>>>       <value>gateway</value>
>>>>>>>>>>>>>     </property>
>>>>>>>>>>>>>     <property>
>>>>>>>>>>>>>       <name>*gateway.port*</name>
>>>>>>>>>>>>>       <value>8443</value>
>>>>>>>>>>>>>     </property>
>>>>>>>>>>>>>     <property>
>>>>>>>>>>>>>       <name>*java.security.auth.login.config*</name>
>>>>>>>>>>>>>       <value>/*etc/knox/conf/krb5JAASLogin.conf*</value>
>>>>>>>>>>>>>     </property>
>>>>>>>>>>>>>     <property>
>>>>>>>>>>>>>       <name>*java.security.krb5.conf*</name>
>>>>>>>>>>>>>       <value>*/etc/krb5.conf*</value>
>>>>>>>>>>>>>     </property>
>>>>>>>>>>>>>     <property>
>>>>>>>>>>>>>       <name>sun.security.krb5.debug</name>
>>>>>>>>>>>>>       <value>true</value>
>>>>>>>>>>>>>     </property>
>>>>>>>>>>>>>   </configuration>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> */etc/knox/conf/krb5JAASLogin.conf*
>>>>>>>>>>>>>
>>>>>>>>>>>>> com.sun.security.jgss.initiate {
>>>>>>>>>>>>> com.sun.security.auth.module.Krb5LoginModule required
>>>>>>>>>>>>> renewTGT=true
>>>>>>>>>>>>> doNotPrompt=true
>>>>>>>>>>>>> useKeyTab=true
>>>>>>>>>>>>> keyTab="/etc/security/keytabs/knox.service.keytab"
>>>>>>>>>>>>> principal="knox/[email protected]"
>>>>>>>>>>>>> isInitiator=true
>>>>>>>>>>>>> storeKey=true
>>>>>>>>>>>>> useTicketCache=true
>>>>>>>>>>>>> client=true;
>>>>>>>>>>>>> };
>>>>>>>>>>>>>
>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>> DP
>>>>>>>>>>>>>
>>>>>>>>>>>>> ---------- Forwarded message ----------
>>>>>>>>>>>>> From: Darpan Patel <[email protected]>
>>>>>>>>>>>>> Date: 7 December 2015 at 17:59
>>>>>>>>>>>>> Subject: Need help setting up Knox for A/D integrated
>>>>>>>>>>>>> Kerberized Cluster
>>>>>>>>>>>>> To: [email protected]
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>>
>>>>>>>>>>>>> I am stuck on an issue from last two days. I would be really
>>>>>>>>>>>>> grateful if someone can help on this.
>>>>>>>>>>>>>
>>>>>>>>>>>>> We have HDP 2.3 implemented over 8 node cluster and the same
>>>>>>>>>>>>> cluster has been Kerberized and later on we have integrated it 
>>>>>>>>>>>>> with Active
>>>>>>>>>>>>> Directory (Which runs in the same VPN). We also verified that 
>>>>>>>>>>>>> Windows 2012
>>>>>>>>>>>>> A/D integration with Ranger works fine for defining policies and 
>>>>>>>>>>>>> audit log.
>>>>>>>>>>>>> But I am stuck at Knox bit. I am trying to replicate the same 
>>>>>>>>>>>>> configuration
>>>>>>>>>>>>> properties which I have set for Ranger LDAP-AD Integration.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I am taking reference of the Hortonworks documentation and
>>>>>>>>>>>>> also Apache Knox documentation.
>>>>>>>>>>>>>
>>>>>>>>>>>>> The A/D domain name is TEST.COM and all the users are under
>>>>>>>>>>>>> Users
>>>>>>>>>>>>>
>>>>>>>>>>>>> [image: Inline images 1]
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Under the Users we have few users one of the them is knox,
>>>>>>>>>>>>> darpan, test,etc.
>>>>>>>>>>>>>
>>>>>>>>>>>>> When we issue following command on the node on which Knox
>>>>>>>>>>>>> Server is running (topology name is default)
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> *curl -iv -k -u [email protected]:#123Password -X GET
>>>>>>>>>>>>> "https://localhost:8443/gateway/default/webhdfs/v1/?op=LISTSTATUS
>>>>>>>>>>>>> <https://localhost:8443/gateway/default/webhdfs/v1/?op=LISTSTATUS>"
>>>>>>>>>>>>>  OR*
>>>>>>>>>>>>>
>>>>>>>>>>>>> *curl -iv -k -u knox:#123Password -X GET
>>>>>>>>>>>>> "https://localhost:8443/gateway/default/webhdfs/v1/?op=LISTSTATUS
>>>>>>>>>>>>> <https://localhost:8443/gateway/default/webhdfs/v1/?op=LISTSTATUS>"*
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Every time I see  < HTTP/1.1 401 Unauthorized HTTP/1.1 401
>>>>>>>>>>>>> Unauthorized on the console.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Entries in the *gateway-audit.log *are like this :
>>>>>>>>>>>>>
>>>>>>>>>>>>> gateway-audit.log
>>>>>>>>>>>>> ==================
>>>>>>>>>>>>> 15/12/07 17:11:08
>>>>>>>>>>>>> ||38606993-17e2-4c3e-ad4b-e3faea293aae|audit|WEBHDFS||||access|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|unavailable|
>>>>>>>>>>>>> 15/12/07 17:11:09
>>>>>>>>>>>>> ||38606993-17e2-4c3e-ad4b-e3faea293aae|audit|WEBHDFS||||authentication|
>>>>>>>>>>>>> *principal*|*[email protected] <[email protected]>*|failure|*LDAP
>>>>>>>>>>>>> authentication failed.*
>>>>>>>>>>>>> 15/12/07 17:11:09
>>>>>>>>>>>>> ||38606993-17e2-4c3e-ad4b-e3faea293aae|audit|WEBHDFS||||access|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|success|Response
>>>>>>>>>>>>> status: 401
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> 15/12/07 17:05:28
>>>>>>>>>>>>> ||5b436e43-b874-40f7-b111-7b262fe5125d|audit|WEBHDFS||||access|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|unavailable|
>>>>>>>>>>>>> 15/12/07 17:05:29
>>>>>>>>>>>>> ||5b436e43-b874-40f7-b111-7b262fe5125d|audit|WEBHDFS||||authentication|
>>>>>>>>>>>>> *principal*|knox|failure|*LDAP authentication failed.*
>>>>>>>>>>>>> 15/12/07 17:05:29
>>>>>>>>>>>>> ||5b436e43-b874-40f7-b111-7b262fe5125d|audit|WEBHDFS||||access|uri|/gateway/default/webhdfs/v1/?op=LISTSTATUS|success|Response
>>>>>>>>>>>>> status: 401
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> *Gateway.log*
>>>>>>>>>>>>> *===========*
>>>>>>>>>>>>> 2015-12-07 17:05:28,620 INFO  hadoop.gateway
>>>>>>>>>>>>> (KnoxLdapRealm.java:getUserDn(550)) - Computed userDn:
>>>>>>>>>>>>> cn=knox,CN=users,DC=test,DC=com using dnTemplate for principal: 
>>>>>>>>>>>>> knox
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Following is the part of our *default.xml *topology:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>        <gateway>
>>>>>>>>>>>>>                 <provider>
>>>>>>>>>>>>>                     <role>authentication</role>
>>>>>>>>>>>>>                     <name>ShiroProvider</name>
>>>>>>>>>>>>>                     <enabled>true</enabled>
>>>>>>>>>>>>>                     <param>
>>>>>>>>>>>>>                         <name>sessionTimeout</name>
>>>>>>>>>>>>>                         <value>30</value>
>>>>>>>>>>>>>                     </param>
>>>>>>>>>>>>>                     <param>
>>>>>>>>>>>>>                         <name>*main.ldapRealm*</name>
>>>>>>>>>>>>>
>>>>>>>>>>>>> <value>org.apache.hadoop.gateway.shirorealm.KnoxLdapRealm</value>
>>>>>>>>>>>>>                     </param>
>>>>>>>>>>>>>
>>>>>>>>>>>>>                     <param>
>>>>>>>>>>>>>                         <name>*main.ldapContextFactory*</name>
>>>>>>>>>>>>>
>>>>>>>>>>>>> <value>org.apache.hadoop.gateway.shirorealm.KnoxLdapContextFactory</value>
>>>>>>>>>>>>>                     </param>
>>>>>>>>>>>>>
>>>>>>>>>>>>>                     <param>
>>>>>>>>>>>>>                         <name>*main.ldapRealm.userDnTemplate*
>>>>>>>>>>>>> </name>
>>>>>>>>>>>>>
>>>>>>>>>>>>> <value>cn={0},CN=users,DC=test,DC=com</value>
>>>>>>>>>>>>>                         <!-- also tried following values -->
>>>>>>>>>>>>>
>>>>>>>>>>>>> <value>uid={0},CN=users,DC=test,DC=com</value>
>>>>>>>>>>>>>                       <value>cn={0},DC=test,DC=com</value>
>>>>>>>>>>>>>                     </param>
>>>>>>>>>>>>>                     <param>
>>>>>>>>>>>>>                         <name>
>>>>>>>>>>>>> *main.ldapRealm.contextFactory.url*</name>
>>>>>>>>>>>>>                         <!-- IP Address of the WINDOSWS 2012
>>>>>>>>>>>>> Acive Directory Server which works for Ranger -->
>>>>>>>>>>>>>                         <value>*ldap://IP_OF_WINDOWS_AD:389*
>>>>>>>>>>>>> </value>
>>>>>>>>>>>>>                     </param>
>>>>>>>>>>>>>                     <param>
>>>>>>>>>>>>>                       <name>
>>>>>>>>>>>>> *main.ldapRealm.authorizationEnabled*</name>
>>>>>>>>>>>>>                       <value>true</value>
>>>>>>>>>>>>>                   </param>
>>>>>>>>>>>>>                   <param>
>>>>>>>>>>>>>                       <name>*main.ldapRealm.searchBase*</name>
>>>>>>>>>>>>>                       <value>cn=users,dc=test,dc=com</value>
>>>>>>>>>>>>>                   </param>
>>>>>>>>>>>>>                   <param>
>>>>>>>>>>>>>                   <param>
>>>>>>>>>>>>>                       <name>
>>>>>>>>>>>>> *main.ldapRealm.memberAttributeValueTemplate*</name>
>>>>>>>>>>>>>
>>>>>>>>>>>>> <value>cn={0},cn=users,dc=test,dc=com</value>
>>>>>>>>>>>>>                       <!-- also tried uid={0} -->
>>>>>>>>>>>>>                   </param>
>>>>>>>>>>>>>                    <param>
>>>>>>>>>>>>>                         <name>
>>>>>>>>>>>>> *main.ldapRealm.contextFactory.authenticationMechanism<*/name>
>>>>>>>>>>>>>                         <value>simple</value>
>>>>>>>>>>>>>                     </param>
>>>>>>>>>>>>>                     <param>
>>>>>>>>>>>>>                         <name>urls./**</name>
>>>>>>>>>>>>>                         <value>authcBasic</value>
>>>>>>>>>>>>>                     </param>
>>>>>>>>>>>>>                   </provider>
>>>>>>>>>>>>>
>>>>>>>>>>>>>                 <provider>
>>>>>>>>>>>>>                     <role>*identity-assertion*</role>
>>>>>>>>>>>>>                     <name>Default</name>
>>>>>>>>>>>>>                     <enabled>true</enabled>
>>>>>>>>>>>>>                      <param>
>>>>>>>>>>>>>         <name>*group.principal.mapping*</name>
>>>>>>>>>>>>>         <value>*=users;hdfs=admin</value>
>>>>>>>>>>>>>     </param>
>>>>>>>>>>>>>                 </provider>
>>>>>>>>>>>>>
>>>>>>>>>>>>>                 <provider>
>>>>>>>>>>>>>                     <role>*authorization*</role>
>>>>>>>>>>>>>                     <name>AclsAuthz</name>
>>>>>>>>>>>>>                     <enabled>true</enabled>
>>>>>>>>>>>>>                 </provider>
>>>>>>>>>>>>>
>>>>>>>>>>>>>            </gateway>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> And following is the console output while trying to access
>>>>>>>>>>>>> webhdfs using curl
>>>>>>>>>>>>>
>>>>>>>>>>>>> curl -iv -k -u knox:#123Password -X GET "
>>>>>>>>>>>>> https://localhost:8443/gateway/default/webhdfs/v1/?op=LISTSTATUS
>>>>>>>>>>>>> "
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> *Console Output:*
>>>>>>>>>>>>> ----------------
>>>>>>>>>>>>>
>>>>>>>>>>>>> * About to connect() to localhost port 8443 (#0)
>>>>>>>>>>>>> *   Trying ::1...
>>>>>>>>>>>>> * Connected to localhost (::1) port 8443 (#0)
>>>>>>>>>>>>> * Initializing NSS with certpath: sql:/etc/pki/nssdb
>>>>>>>>>>>>> * skipping SSL peer certificate verification
>>>>>>>>>>>>> * SSL connection using TLS_DHE_RSA_WITH_AES_128_CBC_SHA
>>>>>>>>>>>>> * Server certificate:
>>>>>>>>>>>>> *       subject:
>>>>>>>>>>>>> CN=FQDN_OF_My_gateway_HOST,OU=Test,O=Hadoop,L=Test,ST=Test,C=US
>>>>>>>>>>>>> *       start date: Nov 27 20:36:22 2015 GMT
>>>>>>>>>>>>> *       expire date: Nov 26 20:36:22 2016 GMT
>>>>>>>>>>>>> *       common name: FQDN_OF_My_gateway_HOST
>>>>>>>>>>>>> *       issuer:
>>>>>>>>>>>>> CN=FQDN_OF_My_gateway_HOST,OU=Test,O=Hadoop,L=Test,ST=Test,C=US
>>>>>>>>>>>>> * Server auth using Basic with user 'knox'
>>>>>>>>>>>>> > GET /gateway/default/webhdfs/v1/?op=LISTSTATUS HTTP/1.1
>>>>>>>>>>>>> > Authorization: Basic a25veDojMTIzUGFzc3dvcmQ=
>>>>>>>>>>>>> > User-Agent: curl/7.29.0
>>>>>>>>>>>>> > Host: localhost:8443
>>>>>>>>>>>>> > Accept: */*
>>>>>>>>>>>>> >
>>>>>>>>>>>>> < HTTP/1.1 401 Unauthorized
>>>>>>>>>>>>> HTTP/1.1 401 Unauthorized
>>>>>>>>>>>>> * Authentication problem. Ignoring this.
>>>>>>>>>>>>> < WWW-Authenticate: BASIC realm="application"
>>>>>>>>>>>>> WWW-Authenticate: BASIC realm="application"
>>>>>>>>>>>>> < Content-Length: 0
>>>>>>>>>>>>> Content-Length: 0
>>>>>>>>>>>>> < Server: Jetty(8.1.14.v20131031)
>>>>>>>>>>>>> Server: Jetty(8.1.14.v20131031)
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Please let me know if any additional information is required.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>> DP
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to