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 >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >
