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/06/26 10:19:42 UTC
directory-kerby git commit: Clean up and refactored some test codes
Repository: directory-kerby
Updated Branches:
refs/heads/master bc2d6771e -> b6c209685
Clean up and refactored some test codes
Project: http://git-wip-us.apache.org/repos/asf/directory-kerby/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerby/commit/b6c20968
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerby/tree/b6c20968
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerby/diff/b6c20968
Branch: refs/heads/master
Commit: b6c209685137feb338ce1fa0e4c9e0a27ede61a7
Parents: bc2d677
Author: Drankye <dr...@gmail.com>
Authored: Fri Jun 26 16:19:29 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Fri Jun 26 16:19:29 2015 +0800
----------------------------------------------------------------------
.../kerby/kerberos/kdc/GssInteropTestBase.java | 80 +++++--------
.../kerby/kerberos/kdc/GssTcpInteropTest.java | 2 +-
.../kerby/kerberos/kdc/GssUdpInteropTest.java | 10 +-
.../org/apache/kerby/kerberos/kdc/KdcTest.java | 67 -----------
.../apache/kerby/kerberos/kdc/KerbyKdcTest.java | 22 +---
.../kerberos/kdc/WithAccessTokenKdcTest.java | 2 +-
.../kerberos/kdc/WithIdentityTokenKdcTest.java | 2 +-
.../kerberos/kdc/WithTokenKdcTestBase.java | 4 +-
.../kerby/kerberos/kerb/server/KdcTestBase.java | 79 +++++++------
.../kerberos/kerb/server/TestKdcServer.java | 29 -----
.../kerberos/kerb/server/GssInteropTest.java | 112 ++++++++-----------
.../kerby/kerberos/kerb/server/KdcTest.java | 16 +--
12 files changed, 129 insertions(+), 296 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssInteropTestBase.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssInteropTestBase.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssInteropTestBase.java
index 20758ce..f2c0e20 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssInteropTestBase.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssInteropTestBase.java
@@ -19,10 +19,11 @@
*/
package org.apache.kerby.kerberos.kdc;
-import java.io.IOException;
-import java.security.Principal;
-import java.security.PrivilegedExceptionAction;
-import java.util.Set;
+import org.apache.kerby.kerberos.kerb.KrbException;
+import org.apache.kerby.kerberos.kerb.server.KdcTestBase;
+import org.ietf.jgss.*;
+import org.junit.Assert;
+import org.junit.Test;
import javax.security.auth.Subject;
import javax.security.auth.callback.Callback;
@@ -31,57 +32,33 @@ import javax.security.auth.callback.PasswordCallback;
import javax.security.auth.callback.UnsupportedCallbackException;
import javax.security.auth.kerberos.KerberosTicket;
import javax.security.auth.login.LoginContext;
-
-import org.apache.kerby.kerberos.kerb.KrbException;
-import org.ietf.jgss.GSSContext;
-import org.ietf.jgss.GSSCredential;
-import org.ietf.jgss.GSSException;
-import org.ietf.jgss.GSSManager;
-import org.ietf.jgss.GSSName;
-import org.ietf.jgss.Oid;
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.kerby.kerberos.kdc.impl.NettyKdcServerImpl;
-import org.apache.kerby.kerberos.kerb.server.KdcConfigKey;
-import org.apache.kerby.kerberos.kerb.server.TestKdcServer;
+import java.io.IOException;
+import java.security.Principal;
+import java.security.PrivilegedExceptionAction;
+import java.util.Set;
/**
* This is an interop test using the Java GSS APIs against the Kerby KDC
*/
-public abstract class GssInteropTestBase extends KdcTest {
- private String clientPrincipal;
- private String serverPrincipal;
-
- @Override
- protected void setUpKdcServer() throws Exception {
- kdcServer = new TestKdcServer();
- prepareKdcServer();
-
- kdcServer.setInnerKdcImpl(new NettyKdcServerImpl());
- kdcServer.init();
-
- // Must disable pre-auth
- kdcServer.getSetting().getKdcConfig().setBoolean(KdcConfigKey.PREAUTH_REQUIRED, false);
-
- kdcRealm = kdcServer.getKdcRealm();
- clientPrincipal = "drankye@" + kdcRealm;
- setClientPrincipal(clientPrincipal);
- serverPrincipal = "test-service/localhost@" + kdcRealm;
- setServerPrincipal(serverPrincipal);
- }
-
+public abstract class GssInteropTestBase extends KdcTestBase {
+
@Override
protected void createPrincipals() throws KrbException {
kdcServer.createTgsPrincipal();
- kdcServer.createPrincipal(serverPrincipal, TEST_PASSWORD);
- kdcServer.createPrincipal(clientPrincipal, TEST_PASSWORD);
+ kdcServer.createPrincipal(getClientPrincipal(), getClientPassword());
+ kdcServer.createPrincipal(getServerPrincipal(), getServerPassword());
}
-
+
+ private String getServerPassword() {
+ return getClientPassword(); // Reuse the same password
+ }
+
@Test
public void testKdc() throws Exception {
kdcServer.start();
- LoginContext loginContext = new LoginContext("drankye", new KerberosCallbackHandler());
+ LoginContext loginContext = new LoginContext(getClientPrincipalName(),
+ new KerberosCallbackHandler());
loginContext.login();
Subject clientSubject = loginContext.getSubject();
@@ -98,7 +75,7 @@ public abstract class GssInteropTestBase extends KdcTest {
// Get the service ticket
KerberosClientExceptionAction action =
new KerberosClientExceptionAction(clientPrincipals.iterator().next(),
- "test-service/localhost@TEST.COM");
+ getServerPrincipal());
byte[] kerberosToken = (byte[]) Subject.doAs(clientSubject, action);
Assert.assertNotNull(kerberosToken);
@@ -112,7 +89,8 @@ public abstract class GssInteropTestBase extends KdcTest {
private void validateServiceTicket(byte[] ticket) throws Exception {
// Get the TGT for the service
- LoginContext loginContext = new LoginContext("test-service", new KerberosCallbackHandler());
+ LoginContext loginContext = new LoginContext(getServerPrincipalName(),
+ new KerberosCallbackHandler());
loginContext.login();
Subject serviceSubject = loginContext.getSubject();
@@ -121,23 +99,23 @@ public abstract class GssInteropTestBase extends KdcTest {
// Handle the service ticket
KerberosServiceExceptionAction serviceAction =
- new KerberosServiceExceptionAction(ticket, "test-service/localhost@TEST.COM");
+ new KerberosServiceExceptionAction(ticket, getServerPrincipal());
Subject.doAs(serviceSubject, serviceAction);
}
- private static class KerberosCallbackHandler implements CallbackHandler {
+ private class KerberosCallbackHandler implements CallbackHandler {
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
if (callbacks[i] instanceof PasswordCallback) {
PasswordCallback pc = (PasswordCallback) callbacks[i];
- if (pc.getPrompt().contains("drankye")) {
- pc.setPassword(TEST_PASSWORD.toCharArray());
+ if (pc.getPrompt().contains(getClientPrincipalName())) {
+ pc.setPassword(getClientPassword().toCharArray());
break;
- } else if (pc.getPrompt().contains("test-service")) {
- pc.setPassword(TEST_PASSWORD.toCharArray());
+ } else if (pc.getPrompt().contains(getServerPrincipalName())) {
+ pc.setPassword(getClientPassword().toCharArray());
break;
}
}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssTcpInteropTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssTcpInteropTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssTcpInteropTest.java
index 8c51300..dca4f4d 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssTcpInteropTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssTcpInteropTest.java
@@ -43,7 +43,7 @@ public class GssTcpInteropTest extends GssInteropTestBase {
// Read in krb5.conf and substitute in the correct port
File file2 = new File(this.getClass().getResource("/krb5.conf").getPath());
String content2 = getFileContent(file2.getPath());
- content2 = content2.replaceAll("port", "" + tcpPort);
+ content2 = content2.replaceAll("port", "" + getTcpPort());
String path2 = writeToTestDir(content2, file2.getName());
System.setProperty("java.security.krb5.conf", path2);
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssUdpInteropTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssUdpInteropTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssUdpInteropTest.java
index 011c070..e2ccd31 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssUdpInteropTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/GssUdpInteropTest.java
@@ -19,10 +19,10 @@
*/
package org.apache.kerby.kerberos.kdc;
-import java.io.File;
-
import org.junit.Before;
+import java.io.File;
+
/**
* This is an interop test using the Java GSS APIs against the Kerby KDC (using UDP)
*/
@@ -33,7 +33,7 @@ public class GssUdpInteropTest extends GssInteropTestBase {
public void setUp() throws Exception {
super.setUp();
- File file1 = new File(this.getClass().getResource("/kerberos.jaas").getPath());
+ File file1 = new File(getClass().getResource("/kerberos.jaas").getPath());
String content1 = getFileContent(file1.getPath());
String path1 = writeToTestDir(content1, file1.getName());
@@ -41,9 +41,9 @@ public class GssUdpInteropTest extends GssInteropTestBase {
System.setProperty("java.security.auth.login.config", path1);
// Read in krb5.conf and substitute in the correct port
- File file2 = new File(this.getClass().getResource("/krb5-udp.conf").getPath());
+ File file2 = new File(getClass().getResource("/krb5-udp.conf").getPath());
String content2 = getFileContent(file2.getPath());
- content2 = content2.replaceAll("port", "" + udpPort);
+ content2 = content2.replaceAll("port", "" + getUdpPort());
String path2 = writeToTestDir(content2, file2.getName());
System.setProperty("java.security.krb5.conf", path2);
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KdcTest.java
deleted file mode 100644
index 28b63c1..0000000
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KdcTest.java
+++ /dev/null
@@ -1,67 +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.kdc;
-
-import org.apache.kerby.kerberos.kerb.KrbException;
-import org.apache.kerby.kerberos.kerb.server.KdcTestBase;
-import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
-import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
-import org.junit.Assert;
-
-import java.io.File;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public abstract class KdcTest extends KdcTestBase {
- private String clientPrincipal;
- private String serverPrincipal;
-
- @Override
- protected void createPrincipals() throws KrbException {
- super.createPrincipals();
- clientPrincipal = getClientPrincipal();
- kdcServer.createPrincipal(clientPrincipal, TEST_PASSWORD);
- }
-
- protected void performKdcTest() throws Exception {
- kdcServer.start();
-
- File testDir = new File(System.getProperty("test.dir", "target"));
- File testConfDir = new File(testDir, "conf");
- krbClnt.setConfDir(testConfDir);
- krbClnt.init();
-
- TgtTicket tgt;
- ServiceTicket tkt;
-
- try {
- tgt = krbClnt.requestTgtWithPassword(clientPrincipal, TEST_PASSWORD);
- assertThat(tgt).isNotNull();
-
- serverPrincipal = getServerPrincipal();
- tkt = krbClnt.requestServiceTicketWithTgt(tgt, serverPrincipal);
- assertThat(tkt).isNotNull();
- } catch (Exception e) {
- System.out.println("Exception occurred with good password");
- e.printStackTrace();
- Assert.fail();
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
index 54b3ef2..61098f0 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/KerbyKdcTest.java
@@ -20,7 +20,6 @@
package org.apache.kerby.kerberos.kdc;
import org.apache.kerby.kerberos.kdc.impl.NettyKdcServerImpl;
-import org.apache.kerby.kerberos.kerb.KrbException;
import org.apache.kerby.kerberos.kerb.server.KdcTestBase;
import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
@@ -31,8 +30,6 @@ import java.io.File;
import static org.assertj.core.api.Assertions.assertThat;
public abstract class KerbyKdcTest extends KdcTestBase {
- private String clientPrincipal;
- private String serverPrincipal;
@Override
protected void prepareKdcServer() throws Exception {
@@ -40,13 +37,6 @@ public abstract class KerbyKdcTest extends KdcTestBase {
kdcServer.setInnerKdcImpl(new NettyKdcServerImpl());
}
- @Override
- protected void createPrincipals() throws KrbException {
- super.createPrincipals();
- clientPrincipal = getClientPrincipal();
- kdcServer.createPrincipal(clientPrincipal, TEST_PASSWORD);
- }
-
protected void performKdcTest() throws Exception {
kdcServer.start();
@@ -60,11 +50,11 @@ public abstract class KerbyKdcTest extends KdcTestBase {
ServiceTicket tkt;
try {
- tgt = krbClnt.requestTgtWithPassword(clientPrincipal, TEST_PASSWORD);
+ tgt = krbClnt.requestTgtWithPassword(getClientPrincipal(),
+ getClientPassword());
assertThat(tgt).isNotNull();
- serverPrincipal = getServerPrincipal();
- tkt = krbClnt.requestServiceTicketWithTgt(tgt, serverPrincipal);
+ tkt = krbClnt.requestServiceTicketWithTgt(tgt, getServerPrincipal());
assertThat(tkt).isNotNull();
} catch (Exception e) {
System.out.println("Exception occurred with good password");
@@ -72,10 +62,4 @@ public abstract class KerbyKdcTest extends KdcTestBase {
Assert.fail();
}
}
-
- @Override
- protected void deletePrincipals() throws KrbException {
- super.deletePrincipals();
- kdcServer.deletePrincipal(clientPrincipal);
- }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
index 34de5de..cb23513 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithAccessTokenKdcTest.java
@@ -27,7 +27,7 @@ public class WithAccessTokenKdcTest extends WithTokenKdcTestBase {
@Test
public void testRequestServiceTicketWithAccessToken() throws Exception {
prepareToken(getServerPrincipal());
- createCredentialCache(getClientPrincipal(), TEST_PASSWORD);
+ createCredentialCache(getClientPrincipal(), getClientPassword());
ServiceTicket serviceTicket = krbClnt.requestServiceTicketWithAccessToken(
getKrbToken(), getServerPrincipal(), getcCacheFile().getPath());
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
index 522419b..2a78f01 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithIdentityTokenKdcTest.java
@@ -32,7 +32,7 @@ public class WithIdentityTokenKdcTest extends WithTokenKdcTestBase {
public void testKdc() throws Exception {
prepareToken(null);
- createCredentialCache(getClientPrincipal(), TEST_PASSWORD);
+ createCredentialCache(getClientPrincipal(), getClientPassword());
TgtTicket tgt = null;
try {
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
----------------------------------------------------------------------
diff --git a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
index 1e44895..052dc92 100644
--- a/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
+++ b/kerby-kdc-test/src/test/java/org/apache/kerby/kerberos/kdc/WithTokenKdcTestBase.java
@@ -62,7 +62,7 @@ public class WithTokenKdcTestBase extends KdcTestBase {
@Override
protected void createPrincipals() throws KrbException {
super.createPrincipals();
- kdcServer.createPrincipal(getClientPrincipal(), TEST_PASSWORD);
+ kdcServer.createPrincipal(getClientPrincipal(), clientPassword);
}
@Override
@@ -141,7 +141,7 @@ public class WithTokenKdcTestBase extends KdcTestBase {
protected void verifyTicket(AbstractServiceTicket ticket) {
assertThat(ticket).isNotNull();
- assertThat(ticket.getRealm()).isEqualTo(kdcRealm);
+ assertThat(ticket.getRealm()).isEqualTo(kdcServer.getKdcRealm());
assertThat(ticket.getTicket()).isNotNull();
assertThat(ticket.getSessionKey()).isNotNull();
assertThat(ticket.getEncKdcRepPart()).isNotNull();
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java b/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
index f76ccc3..974d626 100644
--- a/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
+++ b/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
@@ -24,6 +24,7 @@ import org.apache.kerby.kerberos.kerb.client.KrbClient;
import org.apache.kerby.kerberos.kerb.client.KrbConfig;
import org.apache.kerby.kerberos.kerb.client.KrbConfigKey;
import org.apache.kerby.util.IOUtil;
+import org.apache.kerby.util.NetworkUtil;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
@@ -31,41 +32,25 @@ import org.junit.BeforeClass;
import java.io.File;
import java.io.IOException;
-import java.net.ServerSocket;
public abstract class KdcTestBase {
- protected static final String TEST_PASSWORD = "123456";
private static File testDir;
- protected String kdcRealm;
- private String clientPrincipal;
- private String serverPrincipal;
+ private final String kdcRealm = "TEST.COM";
+ protected final String clientPassword = "123456";
+ private final String hostname = "localhost";
+ private final String clientPrincipalName = "drankye";
+ private final String clientPrincipal = clientPrincipalName + "@" + kdcRealm;
+ private final String serverPrincipalName = "test-service";
+ private final String serverPrincipal =
+ serverPrincipalName + "/" + hostname + "@" + kdcRealm;
- protected String hostname = "localhost";
- protected int tcpPort = -1;
- protected int udpPort = -1;
+ private int tcpPort = -1;
+ private int udpPort = -1;
- protected TestKdcServer kdcServer;
+ protected SimpleKdcServer kdcServer;
protected KrbClient krbClnt;
- /**
- * 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;
- }
-
@BeforeClass
public static void createTestDir() throws IOException {
String basedir = System.getProperty("basedir");
@@ -86,20 +71,24 @@ public abstract class KdcTestBase {
return testDir;
}
- protected void setClientPrincipal(String clientPrincipal) {
- this.clientPrincipal = clientPrincipal;
+ protected String getClientPrincipalName() {
+ return clientPrincipalName;
}
protected String getClientPrincipal() {
- return this.clientPrincipal;
+ return clientPrincipal;
}
- protected void setServerPrincipal(String serverPrincipal) {
- this.serverPrincipal = serverPrincipal;
+ protected String getServerPrincipalName() {
+ return serverPrincipalName;
+ }
+
+ protected String getClientPassword() {
+ return clientPassword;
}
protected String getServerPrincipal() {
- return this.serverPrincipal;
+ return serverPrincipal;
}
protected boolean allowUdp() {
@@ -110,11 +99,20 @@ public abstract class KdcTestBase {
return true;
}
+ protected int getTcpPort() {
+ return tcpPort;
+ }
+
+ protected int getUdpPort() {
+ return udpPort;
+ }
+
protected String getFileContent(String path) throws IOException {
return IOUtil.readFile(new File(path));
}
- protected String writeToTestDir(String content, String fileName) throws IOException {
+ protected String writeToTestDir(String content,
+ String fileName) throws IOException {
File file = new File(testDir, fileName);
if (file.exists()) {
file.delete();
@@ -126,11 +124,11 @@ public abstract class KdcTestBase {
@Before
public void setUp() throws Exception {
if (allowTcp()) {
- tcpPort = getServerPort();
+ tcpPort = NetworkUtil.getServerPort();
}
if (allowUdp()) {
- udpPort = getServerPort();
+ udpPort = NetworkUtil.getServerPort();
}
setUpKdcServer();
@@ -152,6 +150,7 @@ public abstract class KdcTestBase {
* @throws Exception
*/
protected void prepareKdcServer() throws Exception {
+ kdcServer.setKdcRealm(kdcRealm);
kdcServer.setKdcHost(hostname);
kdcServer.setAllowTcp(allowTcp());
if (tcpPort > 0) {
@@ -165,13 +164,9 @@ public abstract class KdcTestBase {
}
protected void setUpKdcServer() throws Exception {
- kdcServer = new TestKdcServer();
+ kdcServer = new SimpleKdcServer();
prepareKdcServer();
kdcServer.init();
-
- kdcRealm = kdcServer.getKdcRealm();
- clientPrincipal = "drankye@" + kdcRealm;
- serverPrincipal = "test-service/localhost@" + kdcRealm;
}
protected void setUpClient() throws Exception {
@@ -199,11 +194,13 @@ public abstract class KdcTestBase {
protected void createPrincipals() throws KrbException {
kdcServer.createTgsPrincipal();
kdcServer.createPrincipals(serverPrincipal);
+ kdcServer.createPrincipal(clientPrincipal, clientPassword);
}
protected void deletePrincipals() throws KrbException {
kdcServer.deleteTgsPrincipal();
kdcServer.deletePrincipals(serverPrincipal);
+ kdcServer.deletePrincipal(clientPrincipal);
}
@After
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/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 023e6ef..0000000
--- a/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java
+++ /dev/null
@@ -1,29 +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;
-
-public class TestKdcServer extends SimpleKdcServer {
-
- @Override
- protected void prepareKdcConfig() {
- KdcConfig kdcConfig = getKdcConfig();
- kdcConfig.setString(KdcConfigKey.KDC_REALM, "TEST.COM");
- }
-}
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/GssInteropTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/GssInteropTest.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/GssInteropTest.java
index 3652fea..e1967eb 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/GssInteropTest.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/GssInteropTest.java
@@ -6,26 +6,21 @@
* 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.KrbException;
-import org.ietf.jgss.GSSContext;
-import org.ietf.jgss.GSSCredential;
-import org.ietf.jgss.GSSException;
-import org.ietf.jgss.GSSManager;
-import org.ietf.jgss.GSSName;
-import org.ietf.jgss.Oid;
+import org.ietf.jgss.*;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -46,34 +41,7 @@ import java.util.Set;
/**
* This is an interop test using the Java GSS APIs against the Kerby KDC
*/
-public class GssInteropTest extends KdcTest {
- private String clientPrincipal;
- private String serverPrincipal;
-
- @Override
- protected void setUpKdcServer() throws Exception {
- kdcServer = new TestKdcServer();
- prepareKdcServer();
-
- kdcServer.init();
-
- // Must disable pre-auth
- kdcServer.getKdcConfig().setBoolean(
- KdcConfigKey.PREAUTH_REQUIRED, true);
-
- kdcRealm = kdcServer.getKdcRealm();
- clientPrincipal = "drankye@" + kdcRealm;
- setClientPrincipal(clientPrincipal);
- serverPrincipal = "test-service/localhost@" + kdcRealm;
- setServerPrincipal(serverPrincipal);
- }
-
- @Override
- protected void createPrincipals() throws KrbException {
- kdcServer.createTgsPrincipal();
- kdcServer.createPrincipal(serverPrincipal, TEST_PASSWORD);
- kdcServer.createPrincipal(clientPrincipal, TEST_PASSWORD);
- }
+public class GssInteropTest extends KdcTestBase {
@Before
@Override
@@ -90,22 +58,29 @@ public class GssInteropTest extends KdcTest {
// Read in krb5.conf and substitute in the correct port
File file2 = new File(this.getClass().getResource("/krb5.conf").getPath());
String content2 = getFileContent(file2.getPath());
- content2 = content2.replaceAll("port", "" + tcpPort);
+ content2 = content2.replaceAll("port", "" + getTcpPort());
String path2 = writeToTestDir(content2, file2.getName());
System.setProperty("java.security.krb5.conf", path2);
}
@Override
- protected boolean allowUdp() {
- return false;
+ protected void createPrincipals() throws KrbException {
+ kdcServer.createTgsPrincipal();
+ kdcServer.createPrincipal(getClientPrincipal(), getClientPassword());
+ kdcServer.createPrincipal(getServerPrincipal(), getServerPassword());
+ }
+
+ private String getServerPassword() {
+ return getClientPassword(); // Reuse the same password
}
@Test
public void testKdc() throws Exception {
kdcServer.start();
- LoginContext loginContext = new LoginContext("drankye", new KerberosCallbackHandler());
+ LoginContext loginContext = new LoginContext(getClientPrincipalName(),
+ new KerberosCallbackHandler());
loginContext.login();
Subject clientSubject = loginContext.getSubject();
@@ -122,7 +97,7 @@ public class GssInteropTest extends KdcTest {
// Get the service ticket
KerberosClientExceptionAction action =
new KerberosClientExceptionAction(clientPrincipals.iterator().next(),
- "test-service/localhost@TEST.COM");
+ getServerPrincipal());
byte[] kerberosToken = (byte[]) Subject.doAs(clientSubject, action);
Assert.assertNotNull(kerberosToken);
@@ -136,7 +111,8 @@ public class GssInteropTest extends KdcTest {
private void validateServiceTicket(byte[] ticket) throws Exception {
// Get the TGT for the service
- LoginContext loginContext = new LoginContext("test-service", new KerberosCallbackHandler());
+ LoginContext loginContext = new LoginContext("test-service",
+ new KerberosCallbackHandler());
loginContext.login();
Subject serviceSubject = loginContext.getSubject();
@@ -145,23 +121,23 @@ public class GssInteropTest extends KdcTest {
// Handle the service ticket
KerberosServiceExceptionAction serviceAction =
- new KerberosServiceExceptionAction(ticket, "test-service/localhost@TEST.COM");
+ new KerberosServiceExceptionAction(ticket,
+ getServerPrincipal());
Subject.doAs(serviceSubject, serviceAction);
}
- private static class KerberosCallbackHandler implements CallbackHandler {
-
+ private class KerberosCallbackHandler implements CallbackHandler {
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
if (callbacks[i] instanceof PasswordCallback) {
PasswordCallback pc = (PasswordCallback) callbacks[i];
- if (pc.getPrompt().contains("drankye")) {
- pc.setPassword(TEST_PASSWORD.toCharArray());
+ if (pc.getPrompt().contains(getClientPrincipalName())) {
+ pc.setPassword(getClientPassword().toCharArray());
break;
- } else if (pc.getPrompt().contains("test-service")) {
- pc.setPassword(TEST_PASSWORD.toCharArray());
+ } else if (pc.getPrompt().contains(getServerPrincipalName())) {
+ pc.setPassword(clientPassword.toCharArray());
break;
}
}
@@ -173,7 +149,7 @@ public class GssInteropTest extends KdcTest {
* This class represents a PrivilegedExceptionAction implementation to obtain a service ticket from a Kerberos
* Key Distribution Center.
*/
- private static class KerberosClientExceptionAction implements PrivilegedExceptionAction<byte[]> {
+ private class KerberosClientExceptionAction implements PrivilegedExceptionAction<byte[]> {
private static final String JGSS_KERBEROS_TICKET_OID = "1.2.840.113554.1.2.2";
@@ -188,26 +164,28 @@ public class GssInteropTest extends KdcTest {
public byte[] run() throws GSSException {
GSSManager gssManager = GSSManager.getInstance();
- GSSName gssService = gssManager.createName(serviceName, GSSName.NT_USER_NAME);
+ GSSName gssService = gssManager.createName(serviceName,
+ GSSName.NT_USER_NAME);
Oid oid = new Oid(JGSS_KERBEROS_TICKET_OID);
- GSSName gssClient = gssManager.createName(clientPrincipal.getName(), GSSName.NT_USER_NAME);
- GSSCredential credentials =
- gssManager.createCredential(
- gssClient, GSSCredential.DEFAULT_LIFETIME, oid, GSSCredential.INITIATE_ONLY
- );
-
- GSSContext secContext =
- gssManager.createContext(
- gssService, oid, credentials, GSSContext.DEFAULT_LIFETIME
- );
+ GSSName gssClient = gssManager.createName(clientPrincipal.getName(),
+ GSSName.NT_USER_NAME);
+ GSSCredential credentials = gssManager.createCredential(
+ gssClient, GSSCredential.DEFAULT_LIFETIME, oid,
+ GSSCredential.INITIATE_ONLY
+ );
+
+ GSSContext secContext = gssManager.createContext(
+ gssService, oid, credentials,
+ GSSContext.DEFAULT_LIFETIME
+ );
secContext.requestMutualAuth(false);
secContext.requestCredDeleg(false);
try {
byte[] token = new byte[0];
- byte[] returnedToken = secContext.initSecContext(token, 0, token.length);
-
+ byte[] returnedToken = secContext.initSecContext(token,
+ 0, token.length);
return returnedToken;
} finally {
secContext.dispose();
@@ -215,7 +193,8 @@ public class GssInteropTest extends KdcTest {
}
}
- private static class KerberosServiceExceptionAction implements PrivilegedExceptionAction<byte[]> {
+ private static class KerberosServiceExceptionAction
+ implements PrivilegedExceptionAction<byte[]> {
private static final String JGSS_KERBEROS_TICKET_OID = "1.2.840.113554.1.2.2";
@@ -232,7 +211,8 @@ public class GssInteropTest extends KdcTest {
GSSManager gssManager = GSSManager.getInstance();
GSSContext secContext = null;
- GSSName gssService = gssManager.createName(serviceName, GSSName.NT_USER_NAME);
+ GSSName gssService = gssManager.createName(serviceName,
+ GSSName.NT_USER_NAME);
Oid oid = new Oid(JGSS_KERBEROS_TICKET_OID);
GSSCredential credentials =
http://git-wip-us.apache.org/repos/asf/directory-kerby/blob/b6c20968/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
----------------------------------------------------------------------
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
index d517a0a..2dcbfcb 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
@@ -19,7 +19,6 @@
*/
package org.apache.kerby.kerberos.kerb.server;
-import org.apache.kerby.kerberos.kerb.KrbException;
import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
import org.junit.Assert;
@@ -29,15 +28,6 @@ import java.io.File;
import static org.assertj.core.api.Assertions.assertThat;
public abstract class KdcTest extends KdcTestBase {
- private String clientPrincipal;
- private String serverPrincipal;
-
- @Override
- protected void createPrincipals() throws KrbException {
- super.createPrincipals();
- clientPrincipal = getClientPrincipal();
- kdcServer.createPrincipal(clientPrincipal, TEST_PASSWORD);
- }
protected void performKdcTest() throws Exception {
kdcServer.start();
@@ -51,11 +41,11 @@ public abstract class KdcTest extends KdcTestBase {
ServiceTicket tkt;
try {
- tgt = krbClnt.requestTgtWithPassword(clientPrincipal, TEST_PASSWORD);
+ tgt = krbClnt.requestTgtWithPassword(getClientPrincipal(),
+ getClientPassword());
assertThat(tgt).isNotNull();
- serverPrincipal = getServerPrincipal();
- tkt = krbClnt.requestServiceTicketWithTgt(tgt, serverPrincipal);
+ tkt = krbClnt.requestServiceTicketWithTgt(tgt, getServerPrincipal());
assertThat(tkt).isNotNull();
} catch (Exception e) {
System.out.println("Exception occurred with good password");