>From what I can see, this problem is directly related to: https://issues.apache.org/jira/browse/HTTPCLIENT-1712.
I have asked them to provide a release that removes this incorrect patch but we will likely have to deal with it in Knox - if at all possible. I will look into overriding GGSSchemeBase in Knox and figure out how to use the extension or forked version as a downloadable patch. Sorry for the inconvenience! On Fri, Oct 21, 2016 at 7:48 AM, larry mccay <[email protected]> wrote: > Hi Benjamin - > > I suspect, based on the error message, that you are right. > The HTTP service name in the SPN is incorrectly set as HTTPS. > > Not sure why this would be. > I will look into our kerberos dispatch code and see if we are explicitly > setting this for some reason. > We should be just letting HttpClient do it for us but I will check. > > thanks, > > --larry > > On Fri, Oct 21, 2016 at 4:59 AM, Ruland, Benjamin <Benjamin.Ruland@ > computacenter.com> wrote: > >> Hi everyone, >> >> >> >> I am experiencing problems with Knox while using WebHDFS in a cluster >> with Kerberos and SSL. >> >> The KDC is an Microsoft AD 2012. Kerberos-Encryption is set to AES256. >> Knox is connected to AD via LDAP sync (this is working fine for other Knox >> services). >> >> I am running HDP 2.5 with Knox 0.9.0 >> >> >> >> In general, the cluster runs fine. WebHDFS using SPNEGO is working. >> >> >> >> But when accessing WebHDFS over Knox, I get an 401 error and some strange >> logs. >> >> I suspect that Knox is trying to get a ticket for a HTTPS/namenode@REALM >> principal, which does not exist. Although running SSL, all principals for >> SPNEGO are HTTP/... >> >> >> >> I this a Knox Bug or is this a misconfiguration at some point? >> >> >> >> It would be great, if someone has advice. >> >> >> >> Best regards, >> >> Benjamin >> >> >> >> >> >> >> >> >> >> >> >> The used command is: >> >> >> >> [root@utilitynode ~]# curl -ik -u validuser " >> https://utilitynode:8443/gateway/default/webhdfs/v1/?OP=LISTSTATUS" >> >> Enter host password for user 'validuser': >> >> HTTP/1.1 401 Unauthorized >> >> Date: Wed, 12 Oct 2016 07:47:41 GMT >> >> Set-Cookie: rememberMe=deleteMe; Path=/gateway/default; Max-Age=0; >> Expires=Tue,11-Oct-2016 07:47:41 GMT >> >> WWW-Authenticate: BASIC realm="application" >> >> Content-Length: 0 >> >> Server: Jetty(9.2.15.v20160210) >> >> >> >> >> >> Debug Log in knox gateway.log >> >> >> >> 2016-10-12 09:51:49,735 DEBUG hadoop.gateway >> (GatewayFilter.java:doFilter(116)) - Received request: GET /webhdfs/v1/ >> >> 2016-10-12 09:51:49,740 DEBUG hadoop.gateway >> (KnoxLdapRealm.java:getUserDn(673)) - Searching from >> OU=someOU,DC=somedomain,DC=de where >> (&(objectclass=person)(sAMAccountName=validuser)) >> scope subtree >> >> 2016-10-12 09:51:49,745 INFO hadoop.gateway >> (KnoxLdapRealm.java:getUserDn(679)) - Computed userDn: >> CN=validuser,OU=Users,OU=someOU,DC=somedomain,DC=de using ldapSearch for >> principal: validuser >> >> 2016-10-12 09:51:49,749 DEBUG hadoop.gateway >> (UrlRewriteProcessor.java:rewrite(166)) - Rewrote URL: >> https://utilitynode:8443/gateway/default/webhdfs/v1/?OP=LISTSTATUS, >> direction: IN via explicit rule: WEBHDFS/webhdfs/inbound/namenode/root >> to URL: https://utilitynode.somedomain.de:50470/webhdfs/v1/?OP=LISTSTATUS >> >> 2016-10-12 09:51:49,749 DEBUG hadoop.gateway >> (DefaultDispatch.java:executeOutboundRequest(120)) - Dispatch request: >> GET https://utilitynode.somedomain.de:50470/webhdfs/v1/?OP= >> LISTSTATUS&doAs=validuser >> >> 2016-10-12 09:51:49,781 WARN auth.HttpAuthenticator >> (HttpAuthenticator.java:generateAuthResponse(207)) - NEGOTIATE >> authentication error: No valid credentials provided (Mechanism level: No >> valid credentials provided (Mechanism level: Server not found in Kerberos >> database (7))) >> >> 2016-10-12 09:51:49,782 DEBUG hadoop.gateway >> (DefaultDispatch.java:executeOutboundRequest(133)) - Dispatch response >> status: 401 >> >> 2016-10-12 09:51:49,783 DEBUG hadoop.gateway >> (DefaultDispatch.java:getInboundResponseContentType(202)) - Using >> explicit character set ISO-8859-1 for entity of type text/html >> >> 2016-10-12 09:51:49,783 DEBUG hadoop.gateway >> (DefaultDispatch.java:getInboundResponseContentType(210)) - Inbound >> response entity content type: text/html; charset=iso-8859-1 >> >> >> >> >> >> Log in knox gateway.out >> >> >> >> Found ticket for knox/[email protected] to go to >> krbtgt/[email protected] expiring on Wed Oct 12 19:53:51 CEST >> 2016 >> >> Entered Krb5Context.initSecContext with state=STATE_NEW >> >> Service ticket not found in the subject >> >> >>> Credentials acquireServiceCreds: same realm >> >> default etypes for default_tgs_enctypes: 18. >> >> >>> CksumType: sun.security.krb5.internal.crypto.RsaMd5CksumType >> >> >>> EType: sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType >> >> getKDCFromDNS using UDP >> >> >>> KrbKdcReq send: kdc=domaincontroller.somedomain.de. TCP:88, >> timeout=30000, number of retries =3, #bytes=1661 >> >> >>> KDCCommunication: kdc=domaincontroller.somedomain.de. TCP:88, >> timeout=30000,Attempt =1, #bytes=1661 >> >> >>>DEBUG: TCPClient reading 127 bytes >> >> >>> KrbKdcReq send: #bytes read=127 >> >> >>> KdcAccessibility: remove domaincontroller.somedomain.de.:88 >> >> >>> KDCRep: init() encoding tag is 126 req type is 13 >> >> >>>KRBError: >> >> sTime is Wed Oct 12 09:53:51 CEST 2016 1476258831000 >> >> suSec is 8354 suSec is 8354 >> >> error code is 7 >> >> error Message is Server not found in Kerberos database >> >> sname is HTTPS/[email protected] >> >> msgType is 30 >> >> >> >> >> >> Extracts from topology config: >> >> >> >> <topology> >> >> >> >> <gateway> >> >> >> >> <provider> >> >> <role>authentication</role> >> >> <name>ShiroProvider</name> >> >> <enabled>true</enabled> >> >> >> >> <!-- LDAP Sync properties sit here --> >> >> >> >> <provider> >> >> <role>identity-assertion</role> >> >> <name>Default</name> >> >> <enabled>true</enabled> >> >> </provider> >> >> >> >> <provider> >> >> <role>authorization</role> >> >> <name>XASecurePDPKnox</name> >> >> <enabled>true</enabled> >> >> </provider> >> >> >> >> <provider> >> >> <role>ha</role> >> >> <name>HaProvider</name> >> >> <enabled>true</enabled> >> >> <param> >> >> <name>WEBHDFS</name> >> >> <value>maxFailoverAttempts=3;failoverSleep=1000;maxRe >> tryAttempts=300;retrySleep=1000;enabled=true</value> >> >> </param> >> >> </provider> >> >> >> >> </gateway> >> >> >> >> <service> >> >> <role>NAMENODE</role> >> >> <url>hdfs://namenode.somedomain.de:8020</url> >> >> <url>hdfs://namenode2.somedomain.de:8020</url> >> >> </service> >> >> >> >> <service> >> >> <role>WEBHDFS</role> >> >> <url>https://namenode.somedomain.de:50470/webhdfs</url> >> >> <url>https://namenode2.somedomain.de:50470/webhdfs</url> >> >> </service> >> >> >> >> </topology> >> >> >> ----------------------------------- >> Computacenter AG & Co. oHG, mit Sitz in Kerpen >> (Amtsgericht Köln HRA 18096) >> Vertretungsberechtigte Gesellschafter: >> Computacenter Aktiengesellschaft, mit Sitz in Köln (Amtsgericht Köln HRB >> 28384) >> Vorstand: Tony Conophy >> Aufsichtsrat: Michael Norris (Vorsitzender) >> Computacenter Management GmbH, mit Sitz in Köln (Amtsgericht Köln HRB 28284) >> Geschäftsführer: Dr. Karsten Freihube, Dr. Thomas Kottmann, Reiner Louis, >> Thomas Jescheck >> Visit us on the Internet: http://www.computacenter.de >> Visit our Online-Shop: https://shop.computacenter.de >> >> This email is confidential. If you are not the intended recipient, you must >> not disclose or use the information contained in it. If you have received >> this mail in error, please tell us immediately by return email and delete >> the document. >> ----------------------------------- >> >> >
