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();
+}