You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by dr...@apache.org on 2015/03/11 22:48:16 UTC

[03/14] directory-kerberos git commit: More refactoring

More refactoring


Project: http://git-wip-us.apache.org/repos/asf/directory-kerberos/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerberos/commit/ab8c0d55
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerberos/tree/ab8c0d55
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerberos/diff/ab8c0d55

Branch: refs/heads/installation
Commit: ab8c0d555d50837dd3d6b2ad347ee6d41ad409ff
Parents: 79ab37e
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Thu Feb 12 17:00:54 2015 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Thu Feb 12 17:00:54 2015 +0000

----------------------------------------------------------------------
 .../kerby/kerberos/kerb/client/KrbClient.java   |   4 +-
 .../kerby/kerberos/kerb/client/KrbContext.java  |   6 +-
 .../kerberos/kerb/server/TestKdcServer.java     | 122 -------------------
 .../kerby/kerberos/kerb/server/KdcTestBase.java |  26 +++-
 .../kerberos/kerb/server/TestKdcServer.java     | 122 +++++++++++++++++++
 .../kerby/kerberos/kerb/server/KdcServer.java   |   2 +-
 6 files changed, 152 insertions(+), 130 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ab8c0d55/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
index b5521e7..5c0b360 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
@@ -65,7 +65,7 @@ public class KrbClient {
      * @param kdcHost
      * @param kdcPort
      */
-    public KrbClient(String kdcHost, short kdcPort) {
+    public KrbClient(String kdcHost, int kdcPort) {
         this(new KrbConfig());
 
         setKdcHost(kdcHost);
@@ -98,7 +98,7 @@ public class KrbClient {
      *
      * @param kdcPort
      */
-    public void setKdcPort(short kdcPort) {
+    public void setKdcPort(int kdcPort) {
         context.setKdcPort(kdcPort);
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ab8c0d55/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbContext.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbContext.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbContext.java
index 12b155f..e9de501 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbContext.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbContext.java
@@ -27,7 +27,7 @@ public class KrbContext {
     private String kdcRealm;
     private KrbConfig config;
     private String kdcHost;
-    private short kdcPort;
+    private int kdcPort;
     private long timeout = 10L;
     private PreauthHandler preauthHandler;
 
@@ -48,14 +48,14 @@ public class KrbContext {
         this.kdcHost = kdcHost;
     }
 
-    public short getKdcPort() {
+    public int getKdcPort() {
         if (kdcPort > 0) {
             return kdcPort;
         }
         return config.getKdcPort();
     }
 
-    public void setKdcPort(short kdcPort) {
+    public void setKdcPort(int kdcPort) {
         this.kdcPort = kdcPort;
     }
 

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ab8c0d55/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java b/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java
deleted file mode 100644
index 0bac5e2..0000000
--- a/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *  
- *    http://www.apache.org/licenses/LICENSE-2.0
- *  
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License. 
- *  
- */
-package org.apache.kerby.kerberos.kerb.server;
-
-import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
-import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
-import org.apache.kerby.kerberos.kerb.keytab.Keytab;
-import org.apache.kerby.kerberos.kerb.keytab.KeytabEntry;
-import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
-import org.apache.kerby.kerberos.kerb.spec.common.EncryptionKey;
-import org.apache.kerby.kerberos.kerb.spec.common.EncryptionType;
-import org.apache.kerby.kerberos.kerb.spec.common.PrincipalName;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.Properties;
-import java.util.UUID;
-
-public class TestKdcServer extends SimpleKdcServer {
-
-    public static final String ORG_DOMAIN = KdcConfigKey.KDC_DOMAIN.getPropertyKey();
-    public static final String KDC_REALM = KdcConfigKey.KDC_REALM.getPropertyKey();
-    public static final String KDC_HOST = KdcConfigKey.KDC_HOST.getPropertyKey();
-    public static final String KDC_TCP_PORT = KdcConfigKey.KDC_TCP_PORT.getPropertyKey();
-    public static final String WORK_DIR = KdcConfigKey.WORK_DIR.getPropertyKey();
-
-    private static final Properties DEFAULT_CONFIG = new Properties();
-    static {
-        DEFAULT_CONFIG.setProperty(KDC_HOST, "localhost");
-        DEFAULT_CONFIG.setProperty(KDC_TCP_PORT, "8018");
-        DEFAULT_CONFIG.setProperty(ORG_DOMAIN, "test.com");
-        DEFAULT_CONFIG.setProperty(KDC_REALM, "TEST.COM");
-    }
-
-    public static Properties createConf() {
-        return (Properties) DEFAULT_CONFIG.clone();
-    }
-
-    public TestKdcServer() {
-        this(createConf());
-    }
-
-    public TestKdcServer(Properties conf) {
-        super();
-        getKdcConfig().getConf().addPropertiesConfig(conf);
-    }
-
-    @Override
-    public void init() {
-        super.init();
-
-        createPrincipals("krbtgt");
-    }
-
-    public String getKdcRealm() {
-        return getKdcConfig().getKdcRealm();
-    }
-
-    public synchronized void createPrincipal(String principal, String password) {
-        KrbIdentity identity = new KrbIdentity(principal);
-        List<EncryptionType> encTypes = getKdcConfig().getEncryptionTypes();
-        List<EncryptionKey> encKeys = null;
-        try {
-            encKeys = EncryptionUtil.generateKeys(fixPrincipal(principal), password, encTypes);
-        } catch (KrbException e) {
-            throw new RuntimeException("Failed to generate encryption keys", e);
-        }
-        identity.addKeys(encKeys);
-        getIdentityService().addIdentity(identity);
-    }
-
-    public void createPrincipals(String ... principals) {
-        String passwd;
-        for (String principal : principals) {
-            passwd = UUID.randomUUID().toString();
-            createPrincipal(fixPrincipal(principal), passwd);
-        }
-    }
-
-    private String fixPrincipal(String principal) {
-        if (! principal.contains("@")) {
-            principal += "@" + getKdcRealm();
-        }
-        return principal;
-    }
-
-    public void exportPrincipals(File keytabFile) throws IOException {
-        Keytab keytab = new Keytab();
-
-        List<KrbIdentity> identities = getIdentityService().getIdentities();
-        for (KrbIdentity identity : identities) {
-            PrincipalName principal = identity.getPrincipal();
-            KerberosTime timestamp = new KerberosTime();
-            for (EncryptionType encType : identity.getKeys().keySet()) {
-                EncryptionKey ekey = identity.getKeys().get(encType);
-                int keyVersion = ekey.getKvno();
-                keytab.addEntry(new KeytabEntry(principal, timestamp, keyVersion, ekey));
-            }
-        }
-
-        keytab.store(keytabFile);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ab8c0d55/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
index 1751474..19f7fe3 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
@@ -19,6 +19,9 @@
  */
 package org.apache.kerby.kerberos.kerb.server;
 
+import java.io.IOException;
+import java.net.ServerSocket;
+
 import org.apache.kerby.kerberos.kerb.client.KrbClient;
 import org.junit.After;
 import org.junit.Before;
@@ -30,8 +33,8 @@ public abstract class KdcTestBase {
     protected String serverPrincipal;
 
     protected String hostname = "localhost";
-    protected short tcpPort = 8088;
-    protected short udpPort = 8089;
+    protected int tcpPort;
+    protected int udpPort;
 
     protected TestKdcServer kdcServer;
     protected KrbClient krbClnt;
@@ -43,6 +46,9 @@ public abstract class KdcTestBase {
     }
 
     protected void setUpKdcServer() throws Exception {
+        tcpPort = getServerPort();
+        udpPort = getServerPort();
+        
         kdcServer = new TestKdcServer();
         kdcServer.setKdcHost(hostname);
         kdcServer.setKdcTcpPort(tcpPort);
@@ -62,7 +68,23 @@ public abstract class KdcTestBase {
         krbClnt.setKdcRealm(kdcServer.getKdcRealm());
     }
 
+    /**
+     * Get a server socket point for testing usage, either TCP or UDP.
+     * @return server socket point
+     */
+    private static int getServerPort() {
+        int serverPort = 0;
+
+        try {
+            ServerSocket serverSocket = new ServerSocket(0);
+            serverPort = serverSocket.getLocalPort();
+            serverSocket.close();
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to get a server socket point");
+        }
 
+        return serverPort;
+    }
 
     @After
     public void tearDown() throws Exception {

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ab8c0d55/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java
new file mode 100644
index 0000000..0bac5e2
--- /dev/null
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java
@@ -0,0 +1,122 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.kerby.kerberos.kerb.server;
+
+import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
+import org.apache.kerby.kerberos.kerb.identity.KrbIdentity;
+import org.apache.kerby.kerberos.kerb.keytab.Keytab;
+import org.apache.kerby.kerberos.kerb.keytab.KeytabEntry;
+import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.spec.KerberosTime;
+import org.apache.kerby.kerberos.kerb.spec.common.EncryptionKey;
+import org.apache.kerby.kerberos.kerb.spec.common.EncryptionType;
+import org.apache.kerby.kerberos.kerb.spec.common.PrincipalName;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Properties;
+import java.util.UUID;
+
+public class TestKdcServer extends SimpleKdcServer {
+
+    public static final String ORG_DOMAIN = KdcConfigKey.KDC_DOMAIN.getPropertyKey();
+    public static final String KDC_REALM = KdcConfigKey.KDC_REALM.getPropertyKey();
+    public static final String KDC_HOST = KdcConfigKey.KDC_HOST.getPropertyKey();
+    public static final String KDC_TCP_PORT = KdcConfigKey.KDC_TCP_PORT.getPropertyKey();
+    public static final String WORK_DIR = KdcConfigKey.WORK_DIR.getPropertyKey();
+
+    private static final Properties DEFAULT_CONFIG = new Properties();
+    static {
+        DEFAULT_CONFIG.setProperty(KDC_HOST, "localhost");
+        DEFAULT_CONFIG.setProperty(KDC_TCP_PORT, "8018");
+        DEFAULT_CONFIG.setProperty(ORG_DOMAIN, "test.com");
+        DEFAULT_CONFIG.setProperty(KDC_REALM, "TEST.COM");
+    }
+
+    public static Properties createConf() {
+        return (Properties) DEFAULT_CONFIG.clone();
+    }
+
+    public TestKdcServer() {
+        this(createConf());
+    }
+
+    public TestKdcServer(Properties conf) {
+        super();
+        getKdcConfig().getConf().addPropertiesConfig(conf);
+    }
+
+    @Override
+    public void init() {
+        super.init();
+
+        createPrincipals("krbtgt");
+    }
+
+    public String getKdcRealm() {
+        return getKdcConfig().getKdcRealm();
+    }
+
+    public synchronized void createPrincipal(String principal, String password) {
+        KrbIdentity identity = new KrbIdentity(principal);
+        List<EncryptionType> encTypes = getKdcConfig().getEncryptionTypes();
+        List<EncryptionKey> encKeys = null;
+        try {
+            encKeys = EncryptionUtil.generateKeys(fixPrincipal(principal), password, encTypes);
+        } catch (KrbException e) {
+            throw new RuntimeException("Failed to generate encryption keys", e);
+        }
+        identity.addKeys(encKeys);
+        getIdentityService().addIdentity(identity);
+    }
+
+    public void createPrincipals(String ... principals) {
+        String passwd;
+        for (String principal : principals) {
+            passwd = UUID.randomUUID().toString();
+            createPrincipal(fixPrincipal(principal), passwd);
+        }
+    }
+
+    private String fixPrincipal(String principal) {
+        if (! principal.contains("@")) {
+            principal += "@" + getKdcRealm();
+        }
+        return principal;
+    }
+
+    public void exportPrincipals(File keytabFile) throws IOException {
+        Keytab keytab = new Keytab();
+
+        List<KrbIdentity> identities = getIdentityService().getIdentities();
+        for (KrbIdentity identity : identities) {
+            PrincipalName principal = identity.getPrincipal();
+            KerberosTime timestamp = new KerberosTime();
+            for (EncryptionType encType : identity.getKeys().keySet()) {
+                EncryptionKey ekey = identity.getKeys().get(encType);
+                int keyVersion = ekey.getKvno();
+                keytab.addEntry(new KeytabEntry(principal, timestamp, keyVersion, ekey));
+            }
+        }
+
+        keytab.store(keytabFile);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/ab8c0d55/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcServer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcServer.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcServer.java
index a0c514e..4e723d9 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcServer.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcServer.java
@@ -113,7 +113,7 @@ public class KdcServer {
         this.kdcTcpPort = kdcTcpPort;
     }
 
-    public void setKdcUdpPort(short kdcUdpPort) {
+    public void setKdcUdpPort(int kdcUdpPort) {
         this.kdcUdpPort = kdcUdpPort;
     }