You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by er...@apache.org on 2007/07/27 04:55:56 UTC
svn commit: r560074 - in
/directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol:
AbstractAuthenticationServiceTest.java AuthenticationServiceTest.java
KerberosProtocolHandlerTest.java
Author: erodriguez
Date: Thu Jul 26 19:55:55 2007
New Revision: 560074
URL: http://svn.apache.org/viewvc?view=rev&rev=560074
Log:
Changes to protocol-kerberos Authentication Service (AS) tests:
o Renamed test class to reflect separation between AS and TGS tests.
o Extracted abstract base class for re-use with different AS test classes.
Added:
directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AbstractAuthenticationServiceTest.java (with props)
directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationServiceTest.java (contents, props changed)
- copied, changed from r559932, directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/KerberosProtocolHandlerTest.java
Removed:
directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/KerberosProtocolHandlerTest.java
Added: directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AbstractAuthenticationServiceTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AbstractAuthenticationServiceTest.java?view=auto&rev=560074
==============================================================================
--- directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AbstractAuthenticationServiceTest.java (added)
+++ directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AbstractAuthenticationServiceTest.java Thu Jul 26 19:55:55 2007
@@ -0,0 +1,216 @@
+/*
+ * 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.directory.server.kerberos.protocol;
+
+
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+
+import javax.security.auth.kerberos.KerberosKey;
+import javax.security.auth.kerberos.KerberosPrincipal;
+
+import junit.framework.TestCase;
+
+import org.apache.directory.server.kerberos.shared.crypto.encryption.CipherTextHandler;
+import org.apache.directory.server.kerberos.shared.crypto.encryption.EncryptionType;
+import org.apache.directory.server.kerberos.shared.crypto.encryption.KeyUsage;
+import org.apache.directory.server.kerberos.shared.io.encoder.EncryptedDataEncoder;
+import org.apache.directory.server.kerberos.shared.messages.value.EncryptedData;
+import org.apache.directory.server.kerberos.shared.messages.value.EncryptedTimeStamp;
+import org.apache.directory.server.kerberos.shared.messages.value.EncryptionKey;
+import org.apache.directory.server.kerberos.shared.messages.value.KerberosTime;
+import org.apache.directory.server.kerberos.shared.messages.value.PreAuthenticationData;
+import org.apache.directory.server.kerberos.shared.messages.value.PreAuthenticationDataModifier;
+import org.apache.directory.server.kerberos.shared.messages.value.PreAuthenticationDataType;
+import org.apache.directory.server.kerberos.shared.messages.value.PrincipalName;
+import org.apache.directory.server.kerberos.shared.messages.value.PrincipalNameModifier;
+import org.apache.directory.server.kerberos.shared.messages.value.PrincipalNameType;
+import org.apache.mina.common.IoFilterChain;
+import org.apache.mina.common.IoHandler;
+import org.apache.mina.common.IoService;
+import org.apache.mina.common.IoServiceConfig;
+import org.apache.mina.common.IoSessionConfig;
+import org.apache.mina.common.TransportType;
+import org.apache.mina.common.WriteFuture;
+import org.apache.mina.common.support.BaseIoSession;
+
+
+/**
+ * Abstract base class for Authentication Service (AS) tests, with utility methods
+ * for generating message components.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public abstract class AbstractAuthenticationServiceTest extends TestCase
+{
+ protected CipherTextHandler lockBox;
+
+
+ protected PreAuthenticationData[] getPreAuthEncryptedTimeStamp( KerberosPrincipal clientPrincipal, String passPhrase )
+ throws Exception
+ {
+ KerberosTime timeStamp = new KerberosTime();
+
+ return getPreAuthEncryptedTimeStamp( clientPrincipal, passPhrase, timeStamp );
+ }
+
+
+ protected PreAuthenticationData[] getPreAuthEncryptedTimeStamp( KerberosPrincipal clientPrincipal,
+ String passPhrase, KerberosTime timeStamp ) throws Exception
+ {
+ PreAuthenticationData[] paData = new PreAuthenticationData[1];
+
+ EncryptedTimeStamp encryptedTimeStamp = new EncryptedTimeStamp( timeStamp, 0 );
+
+ EncryptionKey clientKey = getEncryptionKey( clientPrincipal, passPhrase );
+
+ EncryptedData encryptedData = lockBox.seal( clientKey, encryptedTimeStamp, KeyUsage.NUMBER1 );
+
+ byte[] encodedEncryptedData = EncryptedDataEncoder.encode( encryptedData );
+
+ PreAuthenticationDataModifier preAuth = new PreAuthenticationDataModifier();
+ preAuth.setDataType( PreAuthenticationDataType.PA_ENC_TIMESTAMP );
+ preAuth.setDataValue( encodedEncryptedData );
+
+ paData[0] = preAuth.getPreAuthenticationData();
+
+ return paData;
+ }
+
+
+ protected PrincipalName getPrincipalName( String principalName )
+ {
+ PrincipalNameModifier principalNameModifier = new PrincipalNameModifier();
+ principalNameModifier.addName( principalName );
+ principalNameModifier.setType( PrincipalNameType.KRB_NT_PRINCIPAL.getOrdinal() );
+
+ return principalNameModifier.getPrincipalName();
+ }
+
+
+ /**
+ * Returns an encryption key derived from a principal name and passphrase.
+ *
+ * @param principal
+ * @param passPhrase
+ * @return The server's {@link EncryptionKey}.
+ */
+ protected EncryptionKey getEncryptionKey( KerberosPrincipal principal, String passPhrase )
+ {
+ KerberosKey kerberosKey = new KerberosKey( principal, passPhrase.toCharArray(), "DES" );
+ byte[] keyBytes = kerberosKey.getEncoded();
+ EncryptionKey key = new EncryptionKey( EncryptionType.DES_CBC_MD5, keyBytes );
+
+ return key;
+ }
+
+ protected static class DummySession extends BaseIoSession
+ {
+ Object message;
+
+
+ @Override
+ public WriteFuture write( Object message )
+ {
+ this.message = message;
+
+ return super.write( message );
+ }
+
+
+ protected Object getMessage()
+ {
+ return message;
+ }
+
+
+ protected void updateTrafficMask()
+ {
+ // Do nothing.
+ }
+
+
+ public IoService getService()
+ {
+ return null;
+ }
+
+
+ public IoHandler getHandler()
+ {
+ return null;
+ }
+
+
+ public IoFilterChain getFilterChain()
+ {
+ return null;
+ }
+
+
+ public TransportType getTransportType()
+ {
+ return null;
+ }
+
+
+ public SocketAddress getRemoteAddress()
+ {
+ return new InetSocketAddress( 10088 );
+ }
+
+
+ public SocketAddress getLocalAddress()
+ {
+ return null;
+ }
+
+
+ public IoSessionConfig getConfig()
+ {
+ return null;
+ }
+
+
+ public int getScheduledWriteRequests()
+ {
+ return 0;
+ }
+
+
+ public SocketAddress getServiceAddress()
+ {
+ return null;
+ }
+
+
+ public IoServiceConfig getServiceConfig()
+ {
+ return null;
+ }
+
+
+ public int getScheduledWriteBytes()
+ {
+ return 0;
+ }
+ }
+}
Propchange: directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AbstractAuthenticationServiceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationServiceTest.java (from r559932, directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/KerberosProtocolHandlerTest.java)
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationServiceTest.java?view=diff&rev=560074&p1=directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/KerberosProtocolHandlerTest.java&r1=559932&p2=directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationServiceTest.java&r2=560074
==============================================================================
--- directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/KerberosProtocolHandlerTest.java (original)
+++ directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationServiceTest.java Thu Jul 26 19:55:55 2007
@@ -20,66 +20,41 @@
package org.apache.directory.server.kerberos.protocol;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-
-import javax.security.auth.kerberos.KerberosKey;
import javax.security.auth.kerberos.KerberosPrincipal;
-import junit.framework.TestCase;
-
import org.apache.directory.server.kerberos.kdc.KdcConfiguration;
import org.apache.directory.server.kerberos.shared.crypto.encryption.CipherTextHandler;
import org.apache.directory.server.kerberos.shared.crypto.encryption.EncryptionType;
-import org.apache.directory.server.kerberos.shared.crypto.encryption.KeyUsage;
-import org.apache.directory.server.kerberos.shared.io.encoder.EncryptedDataEncoder;
import org.apache.directory.server.kerberos.shared.messages.AuthenticationReply;
import org.apache.directory.server.kerberos.shared.messages.ErrorMessage;
import org.apache.directory.server.kerberos.shared.messages.KdcRequest;
import org.apache.directory.server.kerberos.shared.messages.MessageType;
-import org.apache.directory.server.kerberos.shared.messages.value.EncryptedData;
-import org.apache.directory.server.kerberos.shared.messages.value.EncryptedTimeStamp;
-import org.apache.directory.server.kerberos.shared.messages.value.EncryptionKey;
import org.apache.directory.server.kerberos.shared.messages.value.KdcOptions;
import org.apache.directory.server.kerberos.shared.messages.value.KerberosTime;
import org.apache.directory.server.kerberos.shared.messages.value.PreAuthenticationData;
-import org.apache.directory.server.kerberos.shared.messages.value.PreAuthenticationDataModifier;
-import org.apache.directory.server.kerberos.shared.messages.value.PreAuthenticationDataType;
-import org.apache.directory.server.kerberos.shared.messages.value.PrincipalName;
-import org.apache.directory.server.kerberos.shared.messages.value.PrincipalNameModifier;
-import org.apache.directory.server.kerberos.shared.messages.value.PrincipalNameType;
import org.apache.directory.server.kerberos.shared.messages.value.RequestBodyModifier;
import org.apache.directory.server.kerberos.shared.messages.value.TicketFlags;
import org.apache.directory.server.kerberos.shared.store.PrincipalStore;
-import org.apache.mina.common.IoFilterChain;
-import org.apache.mina.common.IoHandler;
-import org.apache.mina.common.IoService;
-import org.apache.mina.common.IoServiceConfig;
-import org.apache.mina.common.IoSessionConfig;
-import org.apache.mina.common.TransportType;
-import org.apache.mina.common.WriteFuture;
-import org.apache.mina.common.support.BaseIoSession;
/**
- * Tests the KerberosProtocolHandler.
+ * Tests the Authentication Service (AS) via the {@link KerberosProtocolHandler}.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$, $Date$
*/
-public class KerberosProtocolHandlerTest extends TestCase
+public class AuthenticationServiceTest extends AbstractAuthenticationServiceTest
{
private KdcConfiguration config;
private PrincipalStore store;
private KerberosProtocolHandler handler;
private DummySession session;
- private CipherTextHandler lockBox;
/**
- * Creates a new instance of KerberosProtocolHandlerTest.
+ * Creates a new instance of {@link AuthenticationServiceTest}.
*/
- public KerberosProtocolHandlerTest()
+ public AuthenticationServiceTest()
{
config = new KdcConfiguration();
store = new MapPrincipalStoreImpl();
@@ -1330,156 +1305,5 @@
ErrorMessage error = ( ErrorMessage ) session.getMessage();
assertEquals( "KDC cannot accommodate requested option", 13, error.getErrorCode() );
- }
-
-
- private PreAuthenticationData[] getPreAuthEncryptedTimeStamp( KerberosPrincipal clientPrincipal, String passPhrase )
- throws Exception
- {
- KerberosTime timeStamp = new KerberosTime();
-
- return getPreAuthEncryptedTimeStamp( clientPrincipal, passPhrase, timeStamp );
- }
-
-
- private PreAuthenticationData[] getPreAuthEncryptedTimeStamp( KerberosPrincipal clientPrincipal, String passPhrase,
- KerberosTime timeStamp ) throws Exception
- {
- PreAuthenticationData[] paData = new PreAuthenticationData[1];
-
- EncryptedTimeStamp encryptedTimeStamp = new EncryptedTimeStamp( timeStamp, 0 );
-
- EncryptionKey clientKey = getEncryptionKey( clientPrincipal, passPhrase );
-
- EncryptedData encryptedData = lockBox.seal( clientKey, encryptedTimeStamp, KeyUsage.NUMBER1 );
-
- byte[] encodedEncryptedData = EncryptedDataEncoder.encode( encryptedData );
-
- PreAuthenticationDataModifier preAuth = new PreAuthenticationDataModifier();
- preAuth.setDataType( PreAuthenticationDataType.PA_ENC_TIMESTAMP );
- preAuth.setDataValue( encodedEncryptedData );
-
- paData[0] = preAuth.getPreAuthenticationData();
-
- return paData;
- }
-
-
- private PrincipalName getPrincipalName( String principalName )
- {
- PrincipalNameModifier principalNameModifier = new PrincipalNameModifier();
- principalNameModifier.addName( principalName );
- principalNameModifier.setType( PrincipalNameType.KRB_NT_PRINCIPAL.getOrdinal() );
-
- return principalNameModifier.getPrincipalName();
- }
-
-
- /**
- * Returns an encryption key derived from a principal name and passphrase.
- *
- * @param principal
- * @param passPhrase
- * @return The server's {@link EncryptionKey}.
- */
- protected EncryptionKey getEncryptionKey( KerberosPrincipal principal, String passPhrase )
- {
- KerberosKey kerberosKey = new KerberosKey( principal, passPhrase.toCharArray(), "DES" );
- byte[] keyBytes = kerberosKey.getEncoded();
- EncryptionKey key = new EncryptionKey( EncryptionType.DES_CBC_MD5, keyBytes );
-
- return key;
- }
-
- private static class DummySession extends BaseIoSession
- {
- Object message;
-
-
- @Override
- public WriteFuture write( Object message )
- {
- this.message = message;
-
- return super.write( message );
- }
-
-
- private Object getMessage()
- {
- return message;
- }
-
-
- protected void updateTrafficMask()
- {
- // Do nothing.
- }
-
-
- public IoService getService()
- {
- return null;
- }
-
-
- public IoHandler getHandler()
- {
- return null;
- }
-
-
- public IoFilterChain getFilterChain()
- {
- return null;
- }
-
-
- public TransportType getTransportType()
- {
- return null;
- }
-
-
- public SocketAddress getRemoteAddress()
- {
- return new InetSocketAddress( 10088 );
- }
-
-
- public SocketAddress getLocalAddress()
- {
- return null;
- }
-
-
- public IoSessionConfig getConfig()
- {
- return null;
- }
-
-
- public int getScheduledWriteRequests()
- {
- return 0;
- }
-
-
- public SocketAddress getServiceAddress()
- {
- return null;
- }
-
-
- public IoServiceConfig getServiceConfig()
- {
- return null;
- }
-
-
- public int getScheduledWriteBytes()
- {
- return 0;
- }
}
}
Propchange: directory/apacheds/trunk/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationServiceTest.java
------------------------------------------------------------------------------
svn:eol-style = native