You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pl...@apache.org on 2016/04/08 03:30:48 UTC

directory-kerby git commit: DIRKRB-546 Add super class to AdminSetting and KdcSetting. Contributed by Yan.

Repository: directory-kerby
Updated Branches:
  refs/heads/kadmin-remote 3e4c177e6 -> 93bab436d


DIRKRB-546 Add super class to AdminSetting and KdcSetting. Contributed by Yan.


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

Branch: refs/heads/kadmin-remote
Commit: 93bab436dca778c25db39c7c548f8a4d99624e06
Parents: 3e4c177
Author: plusplusjiajia <ji...@intel.com>
Authored: Fri Apr 8 09:35:42 2016 +0800
Committer: plusplusjiajia <ji...@intel.com>
Committed: Fri Apr 8 09:35:42 2016 +0800

----------------------------------------------------------------------
 .../admin/server/kadmin/AdminServerSetting.java | 16 +++++++--
 .../admin/kadmin/local/LocalKadminImpl.java     | 29 ++++++++++------
 .../kerby/kerberos/kerb/server/KdcSetting.java  |  2 +-
 .../kerberos/kerb/server/ServerSetting.java     | 35 ++++++++++++++++++++
 4 files changed, 69 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/93bab436/kerby-kerb/kerb-admin-server/src/main/java/org/apache/kerby/kerberos/kerb/admin/server/kadmin/AdminServerSetting.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-admin-server/src/main/java/org/apache/kerby/kerberos/kerb/admin/server/kadmin/AdminServerSetting.java b/kerby-kerb/kerb-admin-server/src/main/java/org/apache/kerby/kerberos/kerb/admin/server/kadmin/AdminServerSetting.java
index 8262a8d..62a99fb 100644
--- a/kerby-kerb/kerb-admin-server/src/main/java/org/apache/kerby/kerberos/kerb/admin/server/kadmin/AdminServerSetting.java
+++ b/kerby-kerb/kerb-admin-server/src/main/java/org/apache/kerby/kerberos/kerb/admin/server/kadmin/AdminServerSetting.java
@@ -22,11 +22,13 @@ package org.apache.kerby.kerberos.kerb.admin.server.kadmin;
 import org.apache.kerby.KOptions;
 import org.apache.kerby.kerberos.kerb.KrbException;
 import org.apache.kerby.kerberos.kerb.identity.backend.BackendConfig;
+import org.apache.kerby.kerberos.kerb.server.KdcConfig;
+import org.apache.kerby.kerberos.kerb.server.ServerSetting;
 
 /**
  * Admin Server setting that combines startup options and admin config.
  */
-public class AdminServerSetting {
+public class AdminServerSetting implements ServerSetting {
     private final KOptions startupOptions;
     private final AdminServerConfig adminServerConfig;
     private final BackendConfig backendConfig;
@@ -58,7 +60,17 @@ public class AdminServerSetting {
         return adminServerConfig;
     }
 
-    /**
+  @Override
+  public String getKdcRealm() {
+    return null;
+  }
+
+  @Override
+  public KdcConfig getKdcConfig() {
+    return null;
+  }
+
+  /**
      * Get the backend config.
      * @return backend configuration
      */

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/93bab436/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadminImpl.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadminImpl.java b/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadminImpl.java
index 1e870f3..8eb197b 100644
--- a/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadminImpl.java
+++ b/kerby-kerb/kerb-admin/src/main/java/org/apache/kerby/kerberos/kerb/admin/kadmin/local/LocalKadminImpl.java
@@ -26,6 +26,7 @@ import org.apache.kerby.kerberos.kerb.keytab.Keytab;
 import org.apache.kerby.kerberos.kerb.server.KdcConfig;
 import org.apache.kerby.kerberos.kerb.server.KdcSetting;
 import org.apache.kerby.kerberos.kerb.server.KdcUtil;
+import org.apache.kerby.kerberos.kerb.server.ServerSetting;
 import org.apache.kerby.kerberos.kerb.type.base.EncryptionKey;
 import org.apache.kerby.kerberos.kerb.common.EncryptionUtil;
 import org.apache.kerby.kerberos.kerb.common.KrbUtil;
@@ -49,7 +50,7 @@ import java.util.regex.Pattern;
 public class LocalKadminImpl implements LocalKadmin {
     private static final Logger LOG = LoggerFactory.getLogger(LocalKadminImpl.class);
 
-    private final KdcSetting kdcSetting;
+    private final ServerSetting serverSetting;
     private final IdentityBackend backend;
 
     /**
@@ -62,10 +63,14 @@ public class LocalKadminImpl implements LocalKadmin {
     public LocalKadminImpl(KdcConfig kdcConfig,
                            BackendConfig backendConfig) throws KrbException {
         this.backend = KdcUtil.getBackend(backendConfig);
-        this.kdcSetting = new KdcSetting(kdcConfig, backendConfig);
+        this.serverSetting = new KdcSetting(kdcConfig, backendConfig);
     }
 
     //
+    public LocalKadminImpl(ServerSetting serverSetting) throws KrbException {
+        this.backend = KdcUtil.getBackend(serverSetting.getBackendConfig());
+        this.serverSetting = serverSetting;
+    }
 
     /**
      * Construct with prepared conf dir.
@@ -84,7 +89,7 @@ public class LocalKadminImpl implements LocalKadmin {
             tmpBackendConfig = new BackendConfig();
         }
 
-        this.kdcSetting = new KdcSetting(tmpKdcConfig, tmpBackendConfig);
+        this.serverSetting = new KdcSetting(tmpKdcConfig, tmpBackendConfig);
 
         backend = KdcUtil.getBackend(tmpBackendConfig);
     }
@@ -96,7 +101,7 @@ public class LocalKadminImpl implements LocalKadmin {
      * @param backend    The identity backend
      */
     public LocalKadminImpl(KdcSetting kdcSetting, IdentityBackend backend) {
-        this.kdcSetting = kdcSetting;
+        this.serverSetting = kdcSetting;
         this.backend = backend;
     }
 
@@ -104,12 +109,13 @@ public class LocalKadminImpl implements LocalKadmin {
      * Get the tgs principal name.
      */
     private String getTgsPrincipal() {
-        return KrbUtil.makeTgsPrincipal(kdcSetting.getKdcRealm()).getName();
+        return KrbUtil.makeTgsPrincipal(serverSetting.getKdcRealm()).getName();
     }
 
+    // TODO: 2016/3/14 check whether it is possible to return getAdminServerRealm
     @Override
     public String getKadminPrincipal() {
-        return KrbUtil.makeKadminPrincipal(kdcSetting.getKdcRealm()).getName();
+        return KrbUtil.makeKadminPrincipal(serverSetting.getKdcRealm()).getName();
     }
 
     @Override
@@ -154,12 +160,12 @@ public class LocalKadminImpl implements LocalKadmin {
 
     @Override
     public KdcConfig getKdcConfig() {
-        return kdcSetting.getKdcConfig();
+        return serverSetting.getKdcConfig();
     }
 
     @Override
     public BackendConfig getBackendConfig() {
-        return kdcSetting.getBackendConfig();
+        return serverSetting.getBackendConfig();
     }
 
     @Override
@@ -179,9 +185,12 @@ public class LocalKadminImpl implements LocalKadmin {
         principal = fixPrincipal(principal);
         KrbIdentity identity = AdminHelper.createIdentity(principal, kOptions);
         List<EncryptionKey> keys = EncryptionUtil.generateKeys(
-                getKdcConfig().getEncryptionTypes());
+                getKdcConfig().getEncryptionTypes()); //null point. because KDC is not started. It's OK
+        // not getAdminServerConfig()?
+        // not. adminserver calls addPrincipal, and the local kadmin will interact with backend, which is KDC
         identity.addKeys(keys);
         backend.addIdentity(identity);
+        System.out.println("add backend success"); //delete
     }
 
     @Override
@@ -387,7 +396,7 @@ public class LocalKadminImpl implements LocalKadmin {
      */
     private String fixPrincipal(String principal) {
         if (!principal.contains("@")) {
-            principal += "@" + kdcSetting.getKdcRealm();
+            principal += "@" + serverSetting.getKdcRealm();
         }
         return principal;
     }

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/93bab436/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcSetting.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcSetting.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcSetting.java
index 85f4da7..c53d5d6 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcSetting.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcSetting.java
@@ -26,7 +26,7 @@ import org.apache.kerby.kerberos.kerb.identity.backend.BackendConfig;
 /**
  * KDC setting that combines startup options and kdc config.
  */
-public class KdcSetting {
+public class KdcSetting implements ServerSetting {
     private final KOptions startupOptions;
     private final KdcConfig kdcConfig;
     private final BackendConfig backendConfig;

http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/93bab436/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/ServerSetting.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/ServerSetting.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/ServerSetting.java
new file mode 100644
index 0000000..3c369b1
--- /dev/null
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/ServerSetting.java
@@ -0,0 +1,35 @@
+/**
+ *  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.identity.backend.BackendConfig;
+
+/**
+ * Super clsss of KdcSetting and AdminServer Setting.
+ * This class is used to solve the problem of member variable in
+ * LocalKadminImpl (KdcSetting or AdminServerSetting).
+ */
+public interface ServerSetting {
+    public String getKdcRealm();
+
+    public KdcConfig getKdcConfig();
+
+    public BackendConfig getBackendConfig();
+}