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/04/06 00:36:58 UTC
directory-kerby git commit: Allowing KrbClient to retrieve combined
settings from options and configs
Repository: directory-kerby
Updated Branches:
refs/heads/master 2cf323e65 -> 26f10368a
Allowing KrbClient to retrieve combined settings from options and configs
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/26f10368
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/26f10368
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/26f10368
Branch: refs/heads/master
Commit: 26f10368a5262c4cd5642ddfc368ae28cf36dad4
Parents: 2cf323e
Author: Drankye <dr...@gmail.com>
Authored: Mon Apr 6 06:36:29 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Mon Apr 6 06:36:29 2015 +0800
----------------------------------------------------------------------
.../kerby/kerberos/kerb/client/KrbClient.java | 12 +++
.../kerby/kerberos/kerb/client/KrbSetting.java | 75 ++++++++++++++
.../client/impl/AbstractInternalKrbClient.java | 99 ++++++------------
.../kerb/client/impl/InternalKrbClient.java | 7 ++
.../impl/blocking/BlockModeKrbClient.java | 9 +-
.../client/impl/event/EventBasedKrbClient.java | 13 +--
.../kerby/kerberos/kerb/server/KdcServer.java | 13 ++-
.../server/impl/AbstractInternalKdcServer.java | 12 +--
.../kerb/server/impl/InternalKdcServer.java | 2 +-
.../server/impl/event/EventBasedKdcServer.java | 16 +--
.../kerb/server/impl/event/EventKdcHandler.java | 101 +++++++++++++++++++
.../kerb/server/impl/event/KdcHandler.java | 101 -------------------
12 files changed, 260 insertions(+), 200 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/26f10368/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 67bc7d7..c7cb0a0 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
@@ -134,6 +134,18 @@ public class KrbClient {
}
/**
+ * Get krb client settings from options and configs.
+ * Note it must be called after init().
+ * @return setting
+ */
+ public KrbSetting getSetting() {
+ if (innerClient == null) {
+ throw new RuntimeException("Not init yet");
+ }
+ return innerClient.getSetting();
+ }
+
+ /**
* Request a TGT with user plain credential
* @param principal
* @param password
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/26f10368/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbSetting.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbSetting.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbSetting.java
new file mode 100644
index 0000000..6dcf205
--- /dev/null
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbSetting.java
@@ -0,0 +1,75 @@
+/**
+ * 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.client;
+
+import org.apache.kerby.KOptions;
+
+/**
+ * Krb client setting that combines common options and client config.
+ */
+public class KrbSetting {
+ private final KOptions commonOptions;
+ private final KrbConfig krbConfig;
+
+ public KrbSetting(KOptions commonOptions, KrbConfig config) {
+ this.commonOptions = commonOptions;
+ this.krbConfig = config;
+ }
+
+ public String getKdcHost() {
+ String kdcHost = commonOptions.getStringOption(KrbOption.KDC_HOST);
+ if (kdcHost == null) {
+ return krbConfig.getKdcHost();
+ }
+ return kdcHost;
+ }
+
+ public int getKdcTcpPort() {
+ int tcpPort = commonOptions.getIntegerOption(KrbOption.KDC_TCP_PORT);
+ if (tcpPort > 0) {
+ return tcpPort;
+ }
+ return krbConfig.getKdcTcpPort();
+ }
+
+ public boolean allowUdp() {
+ Boolean allowUdp = commonOptions.getBooleanOption(KrbOption.ALLOW_UDP);
+ if (allowUdp != null) {
+ return allowUdp;
+ }
+ return krbConfig.allowKdcUdp();
+ }
+
+ public int getKdcUdpPort() {
+ int udpPort = commonOptions.getIntegerOption(KrbOption.KDC_UDP_PORT);
+ if (udpPort > 0) {
+ return udpPort;
+ }
+ return krbConfig.getKdcUdpPort();
+ }
+
+ public int getTimeout() {
+ int timeout = commonOptions.getIntegerOption(KrbOption.CONN_TIMEOUT);
+ if (timeout > 0) {
+ return timeout;
+ }
+ return 1000; // by default
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/26f10368/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
index c316b15..97f498b 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/AbstractInternalKrbClient.java
@@ -24,6 +24,7 @@ import org.apache.kerby.kerberos.kerb.KrbException;
import org.apache.kerby.kerberos.kerb.client.KrbConfig;
import org.apache.kerby.kerberos.kerb.client.KrbContext;
import org.apache.kerby.kerberos.kerb.client.KrbOption;
+import org.apache.kerby.kerberos.kerb.client.KrbSetting;
import org.apache.kerby.kerberos.kerb.client.request.*;
import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
import org.apache.kerby.kerberos.kerb.spec.base.PrincipalName;
@@ -39,94 +40,52 @@ import java.io.IOException;
public abstract class AbstractInternalKrbClient implements InternalKrbClient {
private KrbContext context;
private KrbConfig krbConfig;
- private KOptions commonOptions;
+ private KrbSetting krbSetting;
protected KrbContext getContext() {
return context;
}
- /**
- * Prepare krb config, loading krb5.conf.
- * It can be override to add more configuration resources.
- *
- * @throws java.io.IOException
- */
- protected void initConfig() throws IOException {
- this.krbConfig = (KrbConfig) commonOptions.getOptionValue(KrbOption.KRB_CONFIG);
- if (krbConfig == null) {
- krbConfig = new KrbConfig();
- }
-
- File confDir = getConfDir();
- if (confDir == null) {
- confDir = new File("/etc/"); // for Linux. TODO: fix for Win etc.
- }
- if (confDir != null && confDir.exists()) {
- File kdcConfFile = new File(confDir, "krb5.conf");
- if (kdcConfFile.exists()) {
- krbConfig.addIniConfig(kdcConfFile);
- }
- }
- }
-
- protected File getConfDir() {
- return commonOptions.getDirOption(KrbOption.CONF_DIR);
- }
-
- protected String getKdcHost() {
- String kdcHost = commonOptions.getStringOption(KrbOption.KDC_HOST);
- if (kdcHost == null) {
- return krbConfig.getKdcHost();
- }
- return kdcHost;
- }
-
- protected int getKdcTcpPort() {
- int tcpPort = commonOptions.getIntegerOption(KrbOption.KDC_TCP_PORT);
- if (tcpPort > 0) {
- return tcpPort;
- }
- return krbConfig.getKdcTcpPort();
- }
-
- protected boolean allowUdp() {
- Boolean allowUdp = commonOptions.getBooleanOption(KrbOption.ALLOW_UDP);
- if (allowUdp != null) {
- return allowUdp;
- }
- return krbConfig.allowKdcUdp();
- }
-
- protected int getKdcUdpPort() {
- int udpPort = commonOptions.getIntegerOption(KrbOption.KDC_UDP_PORT);
- if (udpPort > 0) {
- return udpPort;
- }
- return krbConfig.getKdcUdpPort();
- }
-
- protected int getTimeout() {
- int timeout = commonOptions.getIntegerOption(KrbOption.CONN_TIMEOUT);
- if (timeout > 0) {
- return timeout;
- }
- return 1000; // by default
+ @Override
+ public KrbSetting getSetting() {
+ return krbSetting;
}
@Override
public void init(KOptions commonOptions) throws KrbException {
- this.commonOptions = commonOptions;
try {
- initConfig();
+ initConfig(commonOptions);
} catch (IOException e) {
throw new RuntimeException("Failed to load config", e);
}
- this.context = new KrbContext();
+ krbSetting = new KrbSetting(commonOptions, krbConfig);
+ context = new KrbContext();
context.init(krbConfig);
}
+ /**
+ * Prepare krb config, loading krb5.conf if necessary.
+ */
+ private void initConfig(KOptions commonOptions) throws IOException {
+ krbConfig = (KrbConfig) commonOptions.getOptionValue(KrbOption.KRB_CONFIG);
+ if (krbConfig == null) {
+ krbConfig = new KrbConfig();
+
+ File confDir = commonOptions.getDirOption(KrbOption.CONF_DIR);
+ if (confDir == null) {
+ confDir = new File("/etc/"); // for Linux. TODO: fix for Win etc.
+ }
+ if (confDir != null && confDir.exists()) {
+ File kdcConfFile = new File(confDir, "krb5.conf");
+ if (kdcConfFile.exists()) {
+ krbConfig.addIniConfig(kdcConfFile);
+ }
+ }
+ }
+ }
+
@Override
public TgtTicket requestTgtTicket(KOptions requestOptions) throws KrbException {
AsRequest asRequest = null;
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/26f10368/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
index 89ef8ac..4dcf50e 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/InternalKrbClient.java
@@ -21,6 +21,7 @@ package org.apache.kerby.kerberos.kerb.client.impl;
import org.apache.kerby.kerberos.kerb.KrbException;
import org.apache.kerby.KOptions;
+import org.apache.kerby.kerberos.kerb.client.KrbSetting;
import org.apache.kerby.kerberos.kerb.spec.base.AuthToken;
import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
@@ -37,6 +38,12 @@ public interface InternalKrbClient {
public void init(KOptions options) throws KrbException;
/**
+ * Get krb client settings.
+ * @return setting
+ */
+ public KrbSetting getSetting();
+
+ /**
* Request a Ticket Granting Ticket.
* @param requestOptions
* @return a TGT
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/26f10368/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/blocking/BlockModeKrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/blocking/BlockModeKrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/blocking/BlockModeKrbClient.java
index db32186..9eabd92 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/blocking/BlockModeKrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/blocking/BlockModeKrbClient.java
@@ -21,7 +21,6 @@ package org.apache.kerby.kerberos.kerb.client.impl.blocking;
import org.apache.kerby.KOptions;
import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.client.KrbConfig;
import org.apache.kerby.kerberos.kerb.client.impl.AbstractInternalKrbClient;
import org.apache.kerby.kerberos.kerb.client.request.AsRequest;
import org.apache.kerby.kerberos.kerb.client.request.TgsRequest;
@@ -48,9 +47,11 @@ public class BlockModeKrbClient extends AbstractInternalKrbClient {
krbHandler.init(getContext());
InetSocketAddress tcpAddress, udpAddress = null;
- tcpAddress= new InetSocketAddress(getKdcHost(), getKdcTcpPort());
- if (allowUdp()) {
- udpAddress = new InetSocketAddress(getKdcHost(), getKdcUdpPort());
+ tcpAddress= new InetSocketAddress(getSetting().getKdcHost(),
+ getSetting().getKdcTcpPort());
+ if (getSetting().allowUdp()) {
+ udpAddress = new InetSocketAddress(getSetting().getKdcHost(),
+ getSetting().getKdcUdpPort());
}
try {
transport = new KrbCombinedTransport(tcpAddress, udpAddress);
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/26f10368/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/event/EventBasedKrbClient.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/event/EventBasedKrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/event/EventBasedKrbClient.java
index 8c3cdbd..a2b9b69 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/event/EventBasedKrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/impl/event/EventBasedKrbClient.java
@@ -24,7 +24,6 @@ import org.apache.kerby.event.Event;
import org.apache.kerby.event.EventHub;
import org.apache.kerby.event.EventWaiter;
import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.client.KrbConfig;
import org.apache.kerby.kerberos.kerb.client.impl.AbstractInternalKrbClient;
import org.apache.kerby.kerberos.kerb.client.request.AsRequest;
import org.apache.kerby.kerberos.kerb.client.request.TgsRequest;
@@ -75,9 +74,11 @@ public class EventBasedKrbClient extends AbstractInternalKrbClient {
eventHub.start();
- network.tcpConnect(getKdcHost(), getKdcTcpPort());
- if (allowUdp()) {
- network.udpConnect(getKdcHost(), getKdcUdpPort());
+ network.tcpConnect(getSetting().getKdcHost(),
+ getSetting().getKdcTcpPort());
+ if (getSetting().allowUdp()) {
+ network.udpConnect(getSetting().getKdcHost(),
+ getSetting().getKdcUdpPort());
}
final Event event = eventWaiter.waitEvent(TransportEventType.NEW_TRANSPORT);
eventTransport = ((TransportEvent) event).getTransport();
@@ -113,7 +114,7 @@ public class EventBasedKrbClient extends AbstractInternalKrbClient {
Event resultEvent;
try {
resultEvent = eventWaiter.waitEvent(KrbClientEventType.TGT_RESULT,
- getTimeout(), TimeUnit.SECONDS);
+ getSetting().getTimeout(), TimeUnit.SECONDS);
} catch (TimeoutException e) {
throw new KrbException("Network timeout", e);
}
@@ -130,7 +131,7 @@ public class EventBasedKrbClient extends AbstractInternalKrbClient {
Event resultEvent;
try {
resultEvent = eventWaiter.waitEvent(KrbClientEventType.TKT_RESULT,
- getTimeout(), TimeUnit.SECONDS);
+ getSetting().getTimeout(), TimeUnit.SECONDS);
} catch (TimeoutException e) {
throw new KrbException("Network timeout", e);
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/26f10368/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 bf98f03..acf2daa 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
@@ -126,11 +126,15 @@ public class KdcServer {
}
/**
- * Get KDC setting.
+ * Get KDC setting from startup options and configs.
+ * Note it must be called after init().
* @return setting
*/
- public KdcSetting getKdcSetting() {
- return innerKdc.getKdcSetting();
+ public KdcSetting getSetting() {
+ if (innerKdc == null) {
+ throw new RuntimeException("Not init yet");
+ }
+ return innerKdc.getSetting();
}
/**
@@ -138,6 +142,9 @@ public class KdcServer {
* @return IdentityService
*/
public IdentityService getIdentityService() {
+ if (innerKdc == null) {
+ throw new RuntimeException("Not init yet");
+ }
return innerKdc.getIdentityService();
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/26f10368/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/AbstractInternalKdcServer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/AbstractInternalKdcServer.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/AbstractInternalKdcServer.java
index 53a285a..f861cbb 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/AbstractInternalKdcServer.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/AbstractInternalKdcServer.java
@@ -42,7 +42,7 @@ public class AbstractInternalKdcServer implements InternalKdcServer {
private IdentityBackend backend;
@Override
- public KdcSetting getKdcSetting() {
+ public KdcSetting getSetting() {
return kdcSetting;
}
@@ -66,7 +66,7 @@ public class AbstractInternalKdcServer implements InternalKdcServer {
throw new RuntimeException("Failed to load configurations", e);
}
- this.kdcSetting = new KdcSetting(startupOptions, kdcConfig);
+ kdcSetting = new KdcSetting(startupOptions, kdcConfig);
initBackend();
}
@@ -74,15 +74,13 @@ public class AbstractInternalKdcServer implements InternalKdcServer {
/**
* Prepare kdc and backend config, loading kdc.conf and backend.conf.
* It can be override to add more configuration resources.
- *
- * @throws java.io.IOException
*/
private void initConfig(KOptions startupOptions) throws IOException {
if (startupOptions.contains(KdcServerOption.KDC_CONFIG)) {
- this.kdcConfig = (KdcConfig) startupOptions.getOptionValue(
+ kdcConfig = (KdcConfig) startupOptions.getOptionValue(
KdcServerOption.KDC_CONFIG);
} else {
- this.kdcConfig = new KdcConfig();
+ kdcConfig = new KdcConfig();
File confDir = startupOptions.getDirOption(KdcServerOption.CONF_DIR);
if (confDir != null && confDir.exists()) {
File kdcConfFile = new File(confDir, "kdc.conf");
@@ -93,7 +91,7 @@ public class AbstractInternalKdcServer implements InternalKdcServer {
}
if (startupOptions.contains(KdcServerOption.BACKEND_CONFIG)) {
- this.backendConfig = (BackendConfig) startupOptions.getOptionValue(
+ backendConfig = (BackendConfig) startupOptions.getOptionValue(
KdcServerOption.BACKEND_CONFIG);
} else {
backendConfig = new BackendConfig();
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/26f10368/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/InternalKdcServer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/InternalKdcServer.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/InternalKdcServer.java
index 349d8c2..92d3450 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/InternalKdcServer.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/InternalKdcServer.java
@@ -49,7 +49,7 @@ public interface InternalKdcServer {
* Get KDC setting.
* @return setting
*/
- public KdcSetting getKdcSetting();
+ public KdcSetting getSetting();
/**
* Get identity service.
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/26f10368/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/event/EventBasedKdcServer.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/event/EventBasedKdcServer.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/event/EventBasedKdcServer.java
index 8b50b73..a39a34b 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/event/EventBasedKdcServer.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/event/EventBasedKdcServer.java
@@ -31,7 +31,7 @@ import org.apache.kerby.transport.Network;
*/
public class EventBasedKdcServer extends AbstractInternalKdcServer {
- private KdcHandler kdcHandler;
+ private EventKdcHandler kdcHandler;
private EventHub eventHub;
@Override
@@ -49,22 +49,22 @@ public class EventBasedKdcServer extends AbstractInternalKdcServer {
eventHub.register(network);
eventHub.start();
- network.tcpListen(getKdcSetting().getKdcHost(),
- getKdcSetting().getKdcTcpPort());
- if (getKdcSetting().allowUdp()) {
- network.udpListen(getKdcSetting().getKdcHost(),
- getKdcSetting().getKdcUdpPort());
+ network.tcpListen(getSetting().getKdcHost(),
+ getSetting().getKdcTcpPort());
+ if (getSetting().allowUdp()) {
+ network.udpListen(getSetting().getKdcHost(),
+ getSetting().getKdcUdpPort());
}
}
private void prepareHandler() {
- KdcContext kdcContext = new KdcContext(getKdcSetting());
+ KdcContext kdcContext = new KdcContext(getSetting());
kdcContext.setIdentityService(getBackend());
PreauthHandler preauthHandler = new PreauthHandler();
preauthHandler.init(kdcContext.getConfig());
kdcContext.setPreauthHandler(preauthHandler);
- this.kdcHandler = new KdcHandler(kdcContext);
+ this.kdcHandler = new EventKdcHandler(kdcContext);
}
@Override
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/26f10368/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/event/EventKdcHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/event/EventKdcHandler.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/event/EventKdcHandler.java
new file mode 100644
index 0000000..94f24e5
--- /dev/null
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/event/EventKdcHandler.java
@@ -0,0 +1,101 @@
+/**
+ * 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.impl.event;
+
+import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.common.KrbUtil;
+import org.apache.kerby.kerberos.kerb.server.KdcContext;
+import org.apache.kerby.kerberos.kerb.server.request.AsRequest;
+import org.apache.kerby.kerberos.kerb.server.request.KdcRequest;
+import org.apache.kerby.kerberos.kerb.server.request.TgsRequest;
+import org.apache.kerby.kerberos.kerb.spec.base.KrbMessage;
+import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
+import org.apache.kerby.kerberos.kerb.spec.kdc.AsReq;
+import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReq;
+import org.apache.kerby.kerberos.kerb.spec.kdc.TgsReq;
+import org.apache.kerby.transport.MessageHandler;
+import org.apache.kerby.transport.Transport;
+import org.apache.kerby.transport.event.MessageEvent;
+import org.apache.kerby.transport.tcp.TcpTransport;
+
+import java.net.InetSocketAddress;
+import java.nio.ByteBuffer;
+
+/**
+ * KDC handler to process client requests. Currently only one realm is supported.
+ */
+public class EventKdcHandler extends MessageHandler {
+
+ private final KdcContext kdcContext;
+
+ public EventKdcHandler(KdcContext kdcContext) {
+ this.kdcContext = kdcContext;
+ }
+
+ @Override
+ protected void handleMessage(MessageEvent event) throws Exception {
+ ByteBuffer message = event.getMessage();
+ Transport transport = event.getTransport();
+
+ KrbMessage krbRequest = KrbUtil.decodeMessageOld(message);
+ KdcRequest kdcRequest = null;
+
+ KrbMessageType messageType = krbRequest.getMsgType();
+ if (messageType == KrbMessageType.TGS_REQ || messageType
+ == KrbMessageType.AS_REQ) {
+ KdcReq kdcReq = (KdcReq) krbRequest;
+ String realm = getRequestRealm(kdcReq);
+ if (realm == null || ! kdcContext.getKdcRealm().equals(realm)) {
+ throw new KrbException("Invalid realm from kdc request: " + realm);
+ }
+
+ if (messageType == KrbMessageType.TGS_REQ) {
+ kdcRequest = new TgsRequest((TgsReq) kdcReq, kdcContext);
+ } else if (messageType == KrbMessageType.AS_REQ) {
+ kdcRequest = new AsRequest((AsReq) kdcReq, kdcContext);
+ }
+ }
+
+ InetSocketAddress clientAddress = transport.getRemoteAddress();
+ kdcRequest.setClientAddress(clientAddress.getAddress());
+ boolean isTcp = (transport instanceof TcpTransport);
+ kdcRequest.isTcp(isTcp);
+
+ try {
+ kdcRequest.process();
+
+ KrbMessage krbResponse = kdcRequest.getReply();
+ KrbUtil.sendMessageOld(krbResponse, transport);
+ } catch (Exception e) {
+ //TODO: log the error
+ System.out.println("Error occured while processing request:"
+ + e.getMessage());
+ }
+ }
+
+ private String getRequestRealm(KdcReq kdcReq) {
+ String realm = kdcReq.getReqBody().getRealm();
+ if (realm == null && kdcReq.getReqBody().getCname() != null) {
+ realm = kdcReq.getReqBody().getCname().getRealm();
+ }
+
+ return realm;
+ }
+}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/26f10368/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/event/KdcHandler.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/event/KdcHandler.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/event/KdcHandler.java
deleted file mode 100644
index b4f6670..0000000
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/impl/event/KdcHandler.java
+++ /dev/null
@@ -1,101 +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.impl.event;
-
-import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.common.KrbUtil;
-import org.apache.kerby.kerberos.kerb.server.KdcContext;
-import org.apache.kerby.kerberos.kerb.server.request.AsRequest;
-import org.apache.kerby.kerberos.kerb.server.request.KdcRequest;
-import org.apache.kerby.kerberos.kerb.server.request.TgsRequest;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessage;
-import org.apache.kerby.kerberos.kerb.spec.base.KrbMessageType;
-import org.apache.kerby.kerberos.kerb.spec.kdc.AsReq;
-import org.apache.kerby.kerberos.kerb.spec.kdc.KdcReq;
-import org.apache.kerby.kerberos.kerb.spec.kdc.TgsReq;
-import org.apache.kerby.transport.MessageHandler;
-import org.apache.kerby.transport.Transport;
-import org.apache.kerby.transport.event.MessageEvent;
-import org.apache.kerby.transport.tcp.TcpTransport;
-
-import java.net.InetSocketAddress;
-import java.nio.ByteBuffer;
-
-/**
- * KDC handler to process client requests. Currently only one realm is supported.
- */
-public class KdcHandler extends MessageHandler {
-
- private final KdcContext kdcContext;
-
- public KdcHandler(KdcContext kdcContext) {
- this.kdcContext = kdcContext;
- }
-
- @Override
- protected void handleMessage(MessageEvent event) throws Exception {
- ByteBuffer message = event.getMessage();
- Transport transport = event.getTransport();
-
- KrbMessage krbRequest = KrbUtil.decodeMessageOld(message);
- KdcRequest kdcRequest = null;
-
- KrbMessageType messageType = krbRequest.getMsgType();
- if (messageType == KrbMessageType.TGS_REQ || messageType
- == KrbMessageType.AS_REQ) {
- KdcReq kdcReq = (KdcReq) krbRequest;
- String realm = getRequestRealm(kdcReq);
- if (realm == null || ! kdcContext.getKdcRealm().equals(realm)) {
- throw new KrbException("Invalid realm from kdc request: " + realm);
- }
-
- if (messageType == KrbMessageType.TGS_REQ) {
- kdcRequest = new TgsRequest((TgsReq) kdcReq, kdcContext);
- } else if (messageType == KrbMessageType.AS_REQ) {
- kdcRequest = new AsRequest((AsReq) kdcReq, kdcContext);
- }
- }
-
- InetSocketAddress clientAddress = transport.getRemoteAddress();
- kdcRequest.setClientAddress(clientAddress.getAddress());
- boolean isTcp = (transport instanceof TcpTransport);
- kdcRequest.isTcp(isTcp);
-
- try {
- kdcRequest.process();
-
- KrbMessage krbResponse = kdcRequest.getReply();
- KrbUtil.sendMessageOld(krbResponse, transport);
- } catch (Exception e) {
- //TODO: log the error
- System.out.println("Error occured while processing request:"
- + e.getMessage());
- }
- }
-
- private String getRequestRealm(KdcReq kdcReq) {
- String realm = kdcReq.getReqBody().getRealm();
- if (realm == null && kdcReq.getReqBody().getCname() != null) {
- realm = kdcReq.getReqBody().getCname().getRealm();
- }
-
- return realm;
- }
-}