Author: phunt
Date: Wed Jun 15 20:31:24 2016
New Revision: 1748631

URL: http://svn.apache.org/viewvc?rev=1748631&view=rev
Log:
ZOOKEEPER-2433: ZooKeeperSaslServer: allow user principals in subject (Andy B 
via phunt)

Modified:
    zookeeper/branches/branch-3.5/CHANGES.txt
    
zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/ZooKeeperSaslServer.java

Modified: zookeeper/branches/branch-3.5/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/zookeeper/branches/branch-3.5/CHANGES.txt?rev=1748631&r1=1748630&r2=1748631&view=diff
==============================================================================
--- zookeeper/branches/branch-3.5/CHANGES.txt (original)
+++ zookeeper/branches/branch-3.5/CHANGES.txt Wed Jun 15 20:31:24 2016
@@ -193,6 +193,9 @@ IMPROVEMENTS:
   ZOOKEEPER-2410: add time unit to 'ELECTION TOOK' log.info message
   (Christine Poerschke via phunt)
 
+  ZOOKEEPER-2433: ZooKeeperSaslServer: allow user principals in
+  subject (Andy B via phunt)
+
 Release 3.5.1 - 07/27/2015
 
 NEW FEATURES:

Modified: 
zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/ZooKeeperSaslServer.java
URL: 
http://svn.apache.org/viewvc/zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/ZooKeeperSaslServer.java?rev=1748631&r1=1748630&r2=1748631&view=diff
==============================================================================
--- 
zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/ZooKeeperSaslServer.java
 (original)
+++ 
zookeeper/branches/branch-3.5/src/java/main/org/apache/zookeeper/server/ZooKeeperSaslServer.java
 Wed Jun 15 20:31:24 2016
@@ -63,16 +63,23 @@ public class ZooKeeperSaslServer {
 
                         int indexOf = 
servicePrincipalNameAndHostname.indexOf("/");
 
-                        // e.g. servicePrincipalName := "zookeeper"
-                        final String servicePrincipalName = 
servicePrincipalNameAndHostname.substring(0, indexOf);
-
                         // e.g. serviceHostnameAndKerbDomain := 
"[email protected]"
                         final String serviceHostnameAndKerbDomain = 
servicePrincipalNameAndHostname.substring(indexOf+1,servicePrincipalNameAndHostname.length());
 
-                        indexOf = serviceHostnameAndKerbDomain.indexOf("@");
-                        // e.g. serviceHostname := "myhost.foo.com"
-                        final String serviceHostname = 
serviceHostnameAndKerbDomain.substring(0,indexOf);
+                        int indexOfAt = 
serviceHostnameAndKerbDomain.indexOf("@");
 
+                        // Handle Kerberos Service as well as User Principal 
Names
+                        final String servicePrincipalName, serviceHostname;
+                        if (indexOf > 0){
+                            // e.g. servicePrincipalName := "zookeeper"
+                            servicePrincipalName = 
servicePrincipalNameAndHostname.substring(0, indexOf);
+                            // e.g. serviceHostname := "myhost.foo.com"
+                            serviceHostname = 
serviceHostnameAndKerbDomain.substring(0, indexOfAt);
+                        } else {
+                            servicePrincipalName = 
servicePrincipalNameAndHostname.substring(0, indexOfAt);
+                            serviceHostname = null;
+                        }
+                        
                         final String mech = "GSSAPI";   // TODO: should depend 
on zoo.cfg specified mechs, but if subject is non-null, it can be assumed to be 
GSSAPI.
 
                         LOG.debug("serviceHostname is '"+ serviceHostname + 
"'");


Reply via email to