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 +
"'");