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