You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2007/10/29 19:17:43 UTC

svn commit: r589782 [1/2] - in /directory/apacheds/branches/bigbang/protocol-kerberos/src: main/java/org/apache/directory/server/kerberos/kdc/authentication/ main/java/org/apache/directory/server/kerberos/kdc/preauthentication/ main/java/org/apache/dir...

Author: elecharny
Date: Mon Oct 29 11:17:35 2007
New Revision: 589782

URL: http://svn.apache.org/viewvc?rev=589782&view=rev
Log:
o Align this project with the modification made in Ticket
o Removed the Authentication chain

Added:
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/AuthenticationService.java
      - copied, changed from r588233, directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/ConfigureAuthenticationChain.java
Removed:
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/AuthenticationServiceChain.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/BuildReply.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/ConfigureAuthenticationChain.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/GenerateTicket.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/GetClientEntry.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/GetServerEntry.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/MonitorContext.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/SealReply.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/VerifyPolicy.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/preauthentication/
Modified:
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/AuthenticationContext.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/BuildReply.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/GenerateTicket.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/MonitorContext.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/SealReply.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/protocol/KerberosProtocolHandler.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AbstractTicketGrantingServiceTest.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationEncryptionTypeTest.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationPolicyTest.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationServiceTest.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/PreAuthenticationTest.java
    directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/TicketGrantingServiceTest.java

Modified: directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/AuthenticationContext.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/AuthenticationContext.java?rev=589782&r1=589781&r2=589782&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/AuthenticationContext.java (original)
+++ directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/AuthenticationContext.java Mon Oct 29 11:17:35 2007
@@ -20,9 +20,6 @@
 package org.apache.directory.server.kerberos.kdc.authentication;
 
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.directory.server.kerberos.kdc.KdcContext;
 import org.apache.directory.server.kerberos.shared.messages.components.Ticket;
 import org.apache.directory.server.kerberos.shared.messages.value.EncryptionKey;
@@ -38,7 +35,7 @@
 {
     private static final long serialVersionUID = -2249170923251265359L;
 
-    private Map checksumEngines = new HashMap();
+    //private Map checksumEngines = new HashMap();
 
     private Ticket ticket;
     private EncryptionKey clientKey;
@@ -88,7 +85,7 @@
 
     /**
      * @return Returns the checksumEngines.
-     */
+     *
     public Map getChecksumEngines()
     {
         return checksumEngines;
@@ -97,7 +94,7 @@
 
     /**
      * @param checksumEngines The checksumEngines to set.
-     */
+     *
     public void setChecksumEngines( Map checksumEngines )
     {
         this.checksumEngines = checksumEngines;

Copied: directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/AuthenticationService.java (from r588233, directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/ConfigureAuthenticationChain.java)
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/AuthenticationService.java?p2=directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/AuthenticationService.java&p1=directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/ConfigureAuthenticationChain.java&r1=588233&r2=589782&rev=589782&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/ConfigureAuthenticationChain.java (original)
+++ directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/authentication/AuthenticationService.java Mon Oct 29 11:17:35 2007
@@ -20,45 +20,846 @@
 package org.apache.directory.server.kerberos.kdc.authentication;
 
 
+import java.io.IOException;
+import java.net.InetAddress;
+import java.util.Date;
+
+import javax.security.auth.kerberos.KerberosKey;
+import javax.security.auth.kerberos.KerberosPrincipal;
+
+import org.apache.directory.server.kerberos.kdc.KdcContext;
+import org.apache.directory.server.kerberos.kdc.KdcServer;
+import org.apache.directory.server.kerberos.kdc.SelectEncryptionType;
+import org.apache.directory.server.kerberos.sam.SamException;
+import org.apache.directory.server.kerberos.sam.SamSubsystem;
+import org.apache.directory.server.kerberos.shared.KerberosConstants;
 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.crypto.encryption.RandomKeyFactory;
 import org.apache.directory.server.kerberos.shared.exceptions.ErrorType;
 import org.apache.directory.server.kerberos.shared.exceptions.KerberosException;
+import org.apache.directory.server.kerberos.shared.io.decoder.EncryptedDataDecoder;
+import org.apache.directory.server.kerberos.shared.io.encoder.EncryptionTypeInfoEncoder;
+import org.apache.directory.server.kerberos.shared.io.encoder.PreAuthenticationDataEncoder;
+import org.apache.directory.server.kerberos.shared.messages.AuthenticationReply;
+import org.apache.directory.server.kerberos.shared.messages.KdcReply;
+import org.apache.directory.server.kerberos.shared.messages.KdcRequest;
+import org.apache.directory.server.kerberos.shared.messages.components.EncTicketPart;
+import org.apache.directory.server.kerberos.shared.messages.components.EncTicketPartModifier;
+import org.apache.directory.server.kerberos.shared.messages.components.InvalidTicketException;
+import org.apache.directory.server.kerberos.shared.messages.components.Ticket;
+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.EncryptionTypeInfoEntry;
+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.LastRequest;
+import org.apache.directory.server.kerberos.shared.messages.value.PaData;
+import org.apache.directory.server.kerberos.shared.messages.value.TicketFlags;
+import org.apache.directory.server.kerberos.shared.messages.value.TransitedEncoding;
+import org.apache.directory.server.kerberos.shared.messages.value.types.PaDataType;
 import org.apache.directory.server.kerberos.shared.replay.InMemoryReplayCache;
 import org.apache.directory.server.kerberos.shared.replay.ReplayCache;
+import org.apache.directory.server.kerberos.shared.store.PrincipalStore;
+import org.apache.directory.server.kerberos.shared.store.PrincipalStoreEntry;
 import org.apache.mina.common.IoSession;
-import org.apache.mina.handler.chain.IoHandlerCommand;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$, $Date$
  */
-public class ConfigureAuthenticationChain implements IoHandlerCommand
+public class AuthenticationService
 {
+    /** The log for this class. */
+    private static final Logger LOG = LoggerFactory.getLogger( SelectEncryptionType.class );
+
     private static final ReplayCache replayCache = new InMemoryReplayCache();
     private static final CipherTextHandler cipherTextHandler = new CipherTextHandler();
 
-    private String contextKey = "context";
+    private static final String CONTEXT_KEY = "context";
+    private static final String SERVICE_NAME = "Authentication Service (AS)";
 
 
-    public void execute( NextCommand next, IoSession session, Object message ) throws Exception
+    public static void execute( IoSession session, AuthenticationContext authContext, Object message ) throws Exception
     {
-        AuthenticationContext authContext = ( AuthenticationContext ) session.getAttribute( getContextKey() );
+        KdcContext kdcContext = ( KdcContext ) session.getAttribute( CONTEXT_KEY );
 
+        if ( LOG.isDebugEnabled() )
+        {
+            monitorRequest( kdcContext );
+        }
+        
         authContext.setReplayCache( replayCache );
         authContext.setCipherTextHandler( cipherTextHandler );
 
-        if ( authContext.getRequest().getProtocolVersionNumber() != 5 )
+        if ( authContext.getRequest().getProtocolVersionNumber() != KerberosConstants.KERBEROS_V5 )
         {
             throw new KerberosException( ErrorType.KDC_ERR_BAD_PVNO );
         }
 
-        next.execute( session, message );
+        selectEncryptionType( authContext, session, message );
+    }
+    
+    private static void selectEncryptionType( AuthenticationContext authContext, IoSession session, Object message ) throws KerberosException, InvalidTicketException
+    {
+        KdcContext kdcContext = ( KdcContext ) session.getAttribute( CONTEXT_KEY );
+        KdcServer config = kdcContext.getConfig();
+
+        EncryptionType[] requestedTypes = kdcContext.getRequest().getEType();
+
+        EncryptionType bestType = getBestEncryptionType( requestedTypes, config.getEncryptionTypes() );
+
+        LOG.debug( "Session will use encryption type {}.", bestType );
+
+        if ( bestType == null )
+        {
+            throw new KerberosException( ErrorType.KDC_ERR_ETYPE_NOSUPP );
+        }
+
+        kdcContext.setEncryptionType( bestType );
+
+        getClientEntry( authContext, session, message );
+    }
+
+    
+    private static void getClientEntry( AuthenticationContext authContext, IoSession session, Object message ) throws KerberosException, InvalidTicketException
+    {
+        KerberosPrincipal principal = authContext.getRequest().getClientPrincipal();
+        PrincipalStore store = authContext.getStore();
+
+        PrincipalStoreEntry storeEntry = getEntry( principal, store, ErrorType.KDC_ERR_C_PRINCIPAL_UNKNOWN ); 
+        authContext.setClientEntry( storeEntry );
+
+        verifyPolicy( authContext, session, message );
+    }
+    
+    private static void verifyPolicy( AuthenticationContext authContext, IoSession session, Object message ) throws KerberosException, InvalidTicketException
+    {
+        PrincipalStoreEntry entry = authContext.getClientEntry();
+
+        if ( entry.isDisabled() )
+        {
+            throw new KerberosException( ErrorType.KDC_ERR_CLIENT_REVOKED );
+        }
+
+        if ( entry.isLockedOut() )
+        {
+            throw new KerberosException( ErrorType.KDC_ERR_CLIENT_REVOKED );
+        }
+
+        if ( entry.getExpiration().getTime() < new Date().getTime() )
+        {
+            throw new KerberosException( ErrorType.KDC_ERR_CLIENT_REVOKED );
+        }
+
+        verifySam( authContext, session, message );
+    }
+    
+    
+    private static void verifySam( AuthenticationContext authContext, IoSession session, Object message ) throws KerberosException, InvalidTicketException
+    {
+        LOG.debug( "Verifying using SAM subsystem." );
+        KdcRequest request = authContext.getRequest();
+        KdcServer config = authContext.getConfig();
+
+        PrincipalStoreEntry clientEntry = authContext.getClientEntry();
+        String clientName = clientEntry.getPrincipal().getName();
+
+        EncryptionKey clientKey = null;
+
+        if ( clientEntry.getSamType() != null )
+        {
+            if ( LOG.isDebugEnabled() )
+            {
+                LOG.debug( "Entry for client principal {} has a valid SAM type.  Invoking SAM subsystem for pre-authentication.", clientName );
+            }
+
+            PaData[] preAuthData = request.getPreAuthData();
+
+            if ( preAuthData == null || preAuthData.length == 0 )
+            {
+                throw new KerberosException( ErrorType.KDC_ERR_PREAUTH_REQUIRED, preparePreAuthenticationError( config
+                    .getEncryptionTypes() ) );
+            }
+
+            try
+            {
+                for ( int ii = 0; ii < preAuthData.length; ii++ )
+                {
+                    if ( preAuthData[ii].getPaDataType().equals( PaDataType.PA_ENC_TIMESTAMP ) )
+                    {
+                        KerberosKey samKey = SamSubsystem.getInstance().verify( clientEntry,
+                            preAuthData[ii].getPaDataValue() );
+                        clientKey = new EncryptionKey( EncryptionType.getTypeByOrdinal( samKey.getKeyType() ), samKey
+                            .getEncoded() );
+                    }
+                }
+            }
+            catch ( SamException se )
+            {
+                throw new KerberosException( ErrorType.KRB_ERR_GENERIC, se );
+            }
+
+            authContext.setClientKey( clientKey );
+            authContext.setPreAuthenticated( true );
+
+            if ( LOG.isDebugEnabled() )
+            {
+                LOG.debug( "Pre-authentication using SAM subsystem successful for {}.", clientName );
+            }
+        }
+
+        verifyEncryptedTimestamp( authContext, session, message );
     }
+    
+    
+    private static void verifyEncryptedTimestamp( AuthenticationContext authContext, IoSession session, Object message ) throws KerberosException, InvalidTicketException
+    {
+        if ( authContext.getClientKey() != null )
+        {
+            getServerEntry( authContext, session, message );
+        }
+
+        LOG.debug( "Verifying using encrypted timestamp." );
+        
+        KdcServer config = authContext.getConfig();
+        KdcRequest request = authContext.getRequest();
+        CipherTextHandler cipherTextHandler = authContext.getCipherTextHandler();
+        PrincipalStoreEntry clientEntry = authContext.getClientEntry();
+        String clientName = clientEntry.getPrincipal().getName();
+
+        EncryptionKey clientKey = null;
+
+        if ( clientEntry.getSamType() == null )
+        {
+            if ( LOG.isDebugEnabled() )
+            {
+                LOG.debug(
+                    "Entry for client principal {} has no SAM type.  Proceeding with standard pre-authentication.",
+                    clientName );
+            }
+
+            EncryptionType encryptionType = authContext.getEncryptionType();
+            clientKey = clientEntry.getKeyMap().get( encryptionType );
+
+            if ( clientKey == null )
+            {
+                throw new KerberosException( ErrorType.KDC_ERR_NULL_KEY );
+            }
+
+            if ( config.isPaEncTimestampRequired() )
+            {
+                PaData[] preAuthData = request.getPreAuthData();
+
+                if ( preAuthData == null )
+                {
+                    throw new KerberosException( ErrorType.KDC_ERR_PREAUTH_REQUIRED,
+                        preparePreAuthenticationError( config.getEncryptionTypes() ) );
+                }
+
+                EncryptedTimeStamp timestamp = null;
+
+                for ( int ii = 0; ii < preAuthData.length; ii++ )
+                {
+                    if ( preAuthData[ii].getPaDataType().equals( PaDataType.PA_ENC_TIMESTAMP ) )
+                    {
+                        EncryptedData dataValue;
+
+                        try
+                        {
+                            dataValue = EncryptedDataDecoder.decode( preAuthData[ii].getPaDataValue() );
+                        }
+                        catch ( IOException ioe )
+                        {
+                            throw new KerberosException( ErrorType.KRB_AP_ERR_BAD_INTEGRITY, ioe );
+                        }
+                        catch ( ClassCastException cce )
+                        {
+                            throw new KerberosException( ErrorType.KRB_AP_ERR_BAD_INTEGRITY, cce );
+                        }
+
+                        timestamp = ( EncryptedTimeStamp ) cipherTextHandler.unseal( EncryptedTimeStamp.class,
+                            clientKey, dataValue, KeyUsage.NUMBER1 );
+                    }
+                }
 
+                if ( preAuthData.length > 0 && timestamp == null )
+                {
+                    throw new KerberosException( ErrorType.KDC_ERR_PADATA_TYPE_NOSUPP );
+                }
 
-    protected String getContextKey()
+                if ( timestamp == null )
+                {
+                    throw new KerberosException( ErrorType.KDC_ERR_PREAUTH_REQUIRED,
+                        preparePreAuthenticationError( config.getEncryptionTypes() ) );
+                }
+
+                if ( !timestamp.getTimeStamp().isInClockSkew( config.getAllowableClockSkew() ) )
+                {
+                    throw new KerberosException( ErrorType.KDC_ERR_PREAUTH_FAILED );
+                }
+
+                /*
+                 * if(decrypted_enc_timestamp and usec is replay)
+                 *         error_out(KDC_ERR_PREAUTH_FAILED);
+                 * endif
+                 * 
+                 * add decrypted_enc_timestamp and usec to replay cache;
+                 */
+            }
+        }
+
+        authContext.setClientKey( clientKey );
+        authContext.setPreAuthenticated( true );
+
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( "Pre-authentication by encrypted timestamp successful for {}.", clientName );
+        }
+
+        getServerEntry( authContext, session, message );
+    }
+    
+    
+    private static void getServerEntry( AuthenticationContext authContext, IoSession session, Object message ) throws KerberosException, InvalidTicketException
+    {
+        KerberosPrincipal principal = authContext.getRequest().getServerPrincipal();
+        PrincipalStore store = authContext.getStore();
+    
+        authContext.setServerEntry( getEntry( principal, store, ErrorType.KDC_ERR_S_PRINCIPAL_UNKNOWN ) );
+    
+        generateTicket( authContext, session, message );
+    }    
+    
+    
+    private static void generateTicket( AuthenticationContext authContext, IoSession session, Object message ) throws KerberosException, InvalidTicketException
     {
-        return ( this.contextKey );
+        KdcRequest request = authContext.getRequest();
+        CipherTextHandler cipherTextHandler = authContext.getCipherTextHandler();
+        KerberosPrincipal serverPrincipal = request.getServerPrincipal();
+
+        EncryptionType encryptionType = authContext.getEncryptionType();
+        EncryptionKey serverKey = authContext.getServerEntry().getKeyMap().get( encryptionType );
+
+        KerberosPrincipal ticketPrincipal = request.getServerPrincipal();
+        EncTicketPartModifier newTicketBody = new EncTicketPartModifier();
+        KdcServer config = authContext.getConfig();
+
+        // The INITIAL flag indicates that a ticket was issued using the AS protocol.
+        newTicketBody.setFlag( TicketFlags.INITIAL );
+
+        // The PRE-AUTHENT flag indicates that the client used pre-authentication.
+        if ( authContext.isPreAuthenticated() )
+        {
+            newTicketBody.setFlag( TicketFlags.PRE_AUTHENT );
+        }
+
+        if ( request.getOption( KdcOptions.FORWARDABLE ) )
+        {
+            if ( !config.isForwardableAllowed() )
+            {
+                throw new KerberosException( ErrorType.KDC_ERR_POLICY );
+            }
+
+            newTicketBody.setFlag( TicketFlags.FORWARDABLE );
+        }
+
+        if ( request.getOption( KdcOptions.PROXIABLE ) )
+        {
+            if ( !config.isProxiableAllowed() )
+            {
+                throw new KerberosException( ErrorType.KDC_ERR_POLICY );
+            }
+
+            newTicketBody.setFlag( TicketFlags.PROXIABLE );
+        }
+
+        if ( request.getOption( KdcOptions.ALLOW_POSTDATE ) )
+        {
+            if ( !config.isPostdatedAllowed() )
+            {
+                throw new KerberosException( ErrorType.KDC_ERR_POLICY );
+            }
+
+            newTicketBody.setFlag( TicketFlags.MAY_POSTDATE );
+        }
+
+        if ( request.getOption( KdcOptions.RENEW ) || request.getOption( KdcOptions.VALIDATE )
+            || request.getOption( KdcOptions.PROXY ) || request.getOption( KdcOptions.FORWARDED )
+            || request.getOption( KdcOptions.ENC_TKT_IN_SKEY ) )
+        {
+            throw new KerberosException( ErrorType.KDC_ERR_BADOPTION );
+        }
+
+        EncryptionKey sessionKey = RandomKeyFactory.getRandomKey( authContext.getEncryptionType() );
+        newTicketBody.setSessionKey( sessionKey );
+
+        newTicketBody.setClientPrincipal( request.getClientPrincipal() );
+        newTicketBody.setTransitedEncoding( new TransitedEncoding() );
+
+        KerberosTime now = new KerberosTime();
+
+        newTicketBody.setAuthTime( now );
+
+        KerberosTime startTime = request.getFrom();
+
+        /*
+         * "If the requested starttime is absent, indicates a time in the past,
+         * or is within the window of acceptable clock skew for the KDC and the
+         * POSTDATE option has not been specified, then the starttime of the
+         * ticket is set to the authentication server's current time."
+         */
+        if ( startTime == null || startTime.lessThan( now ) || startTime.isInClockSkew( config.getAllowableClockSkew() )
+            && !request.getOption( KdcOptions.POSTDATED ) )
+        {
+            startTime = now;
+        }
+
+        /*
+         * "If it indicates a time in the future beyond the acceptable clock skew,
+         * but the POSTDATED option has not been specified, then the error
+         * KDC_ERR_CANNOT_POSTDATE is returned."
+         */
+        if ( startTime != null && startTime.greaterThan( now )
+            && !startTime.isInClockSkew( config.getAllowableClockSkew() ) && !request.getOption( KdcOptions.POSTDATED ) )
+        {
+            throw new KerberosException( ErrorType.KDC_ERR_CANNOT_POSTDATE );
+        }
+
+        /*
+         * "Otherwise the requested starttime is checked against the policy of the
+         * local realm and if the ticket's starttime is acceptable, it is set as
+         * requested, and the INVALID flag is set in the new ticket."
+         */
+        if ( request.getOption( KdcOptions.POSTDATED ) )
+        {
+            if ( !config.isPostdatedAllowed() )
+            {
+                throw new KerberosException( ErrorType.KDC_ERR_POLICY );
+            }
+
+            newTicketBody.setFlag( TicketFlags.POSTDATED );
+            newTicketBody.setFlag( TicketFlags.INVALID );
+            newTicketBody.setStartTime( startTime );
+        }
+
+        long till = 0;
+        if ( request.getTill().getTime() == 0 )
+        {
+            till = Long.MAX_VALUE;
+        }
+        else
+        {
+            till = request.getTill().getTime();
+        }
+
+        /*
+         * The end time is the minimum of (a) the requested till time or (b)
+         * the start time plus maximum lifetime as configured in policy.
+         */
+        long endTime = Math.min( till, startTime.getTime() + config.getMaximumTicketLifetime() );
+        KerberosTime kerberosEndTime = new KerberosTime( endTime );
+        newTicketBody.setEndTime( kerberosEndTime );
+
+        /*
+         * "If the requested expiration time minus the starttime (as determined
+         * above) is less than a site-determined minimum lifetime, an error
+         * message with code KDC_ERR_NEVER_VALID is returned."
+         */
+        if ( kerberosEndTime.lessThan( startTime ) )
+        {
+            throw new KerberosException( ErrorType.KDC_ERR_NEVER_VALID );
+        }
+
+        long ticketLifeTime = Math.abs( startTime.getTime() - kerberosEndTime.getTime() );
+        if ( ticketLifeTime < config.getAllowableClockSkew() )
+        {
+            throw new KerberosException( ErrorType.KDC_ERR_NEVER_VALID );
+        }
+
+        /*
+         * "If the requested expiration time for the ticket exceeds what was determined
+         * as above, and if the 'RENEWABLE-OK' option was requested, then the 'RENEWABLE'
+         * flag is set in the new ticket, and the renew-till value is set as if the
+         * 'RENEWABLE' option were requested."
+         */
+        KerberosTime tempRtime = request.getRtime();
+
+        if ( request.getOption( KdcOptions.RENEWABLE_OK ) && request.getTill().greaterThan( kerberosEndTime ) )
+        {
+            if ( !config.isRenewableAllowed() )
+            {
+                throw new KerberosException( ErrorType.KDC_ERR_POLICY );
+            }
+
+            request.setOption( KdcOptions.RENEWABLE );
+            tempRtime = request.getTill();
+        }
+
+        if ( request.getOption( KdcOptions.RENEWABLE ) )
+        {
+            if ( !config.isRenewableAllowed() )
+            {
+                throw new KerberosException( ErrorType.KDC_ERR_POLICY );
+            }
+
+            newTicketBody.setFlag( TicketFlags.RENEWABLE );
+
+            if ( tempRtime == null || tempRtime.isZero() )
+            {
+                tempRtime = KerberosTime.INFINITY;
+            }
+
+            /*
+             * The renew-till time is the minimum of (a) the requested renew-till
+             * time or (b) the start time plus maximum renewable lifetime as
+             * configured in policy.
+             */
+            long renewTill = Math.min( tempRtime.getTime(), startTime.getTime() + config.getMaximumRenewableLifetime() );
+            newTicketBody.setRenewTill( new KerberosTime( renewTill ) );
+        }
+
+        if ( request.getAddresses() != null && request.getAddresses().getAddresses() != null
+            && request.getAddresses().getAddresses().length > 0 )
+        {
+            newTicketBody.setClientAddresses( request.getAddresses() );
+        }
+        else
+        {
+            if ( !config.isEmptyAddressesAllowed() )
+            {
+                throw new KerberosException( ErrorType.KDC_ERR_POLICY );
+            }
+        }
+
+        EncTicketPart ticketPart = newTicketBody.getEncTicketPart();
+
+        EncryptedData encryptedData = cipherTextHandler.seal( serverKey, ticketPart, KeyUsage.NUMBER2 );
+
+        Ticket newTicket = new Ticket( ticketPrincipal, encryptedData );
+        newTicket.setEncTicketPart( ticketPart );
+
+        if ( LOG.isDebugEnabled() )
+        {
+            LOG.debug( "Ticket will be issued for access to {}.", serverPrincipal.toString() );
+        }
+
+        authContext.setTicket( newTicket );
+
+        buildReply( authContext, session, message );
+    }
+    
+    
+    private static void buildReply( AuthenticationContext authContext, IoSession session, Object message ) throws KerberosException, InvalidTicketException
+    {
+        KdcRequest request = authContext.getRequest();
+        Ticket ticket = authContext.getTicket();
+
+        AuthenticationReply reply = new AuthenticationReply();
+
+        reply.setClientPrincipal( request.getClientPrincipal() );
+        reply.setTicket( ticket );
+        reply.setKey( ticket.getEncTicketPart().getSessionKey() );
+
+        // TODO - fetch lastReq for this client; requires store
+        reply.setLastRequest( new LastRequest() );
+        // TODO - resp.key-expiration := client.expiration; requires store
+
+        reply.setNonce( request.getNonce() );
+
+        reply.setFlags( ticket.getEncTicketPart().getFlags() );
+        reply.setAuthTime( ticket.getEncTicketPart().getAuthTime() );
+        reply.setStartTime( ticket.getEncTicketPart().getStartTime() );
+        reply.setEndTime( ticket.getEncTicketPart().getEndTime() );
+
+        if ( ticket.getEncTicketPart().getFlags().get( TicketFlags.RENEWABLE ) )
+        {
+            reply.setRenewTill( ticket.getEncTicketPart().getRenewTill() );
+        }
+
+        reply.setServerPrincipal( ticket.getServerPrincipal() );
+        reply.setClientAddresses( ticket.getEncTicketPart().getClientAddresses() );
+
+        authContext.setReply( reply );
+
+        if ( LOG.isDebugEnabled() )
+        {
+            monitorContext( authContext );
+            monitorReply( ( KdcContext ) session.getAttribute( CONTEXT_KEY ) );
+        }
+        
+        sealReply( authContext, session, message );
+    }
+    
+    
+    private static void sealReply( AuthenticationContext authContext, IoSession session, Object message ) throws KerberosException, InvalidTicketException
+    {
+        AuthenticationReply reply = ( AuthenticationReply ) authContext.getReply();
+        EncryptionKey clientKey = authContext.getClientKey();
+        CipherTextHandler cipherTextHandler = authContext.getCipherTextHandler();
+
+        EncryptedData encryptedData = cipherTextHandler.seal( clientKey, reply, KeyUsage.NUMBER3 );
+        reply.setEncPart( encryptedData );
+
+        //next.execute( session, message );
+    }
+    
+    
+    private static void monitorRequest( KdcContext kdcContext )
+    {
+        KdcRequest request = kdcContext.getRequest();
+
+        if ( LOG.isDebugEnabled() )
+        {
+            try
+            {
+                String clientAddress = kdcContext.getClientAddress().getHostAddress();
+
+                StringBuffer sb = new StringBuffer();
+
+                sb.append( "Received " + SERVICE_NAME + " request:" );
+                sb.append( "\n\t" + "messageType:           " + request.getMessageType() );
+                sb.append( "\n\t" + "protocolVersionNumber: " + request.getProtocolVersionNumber() );
+                sb.append( "\n\t" + "clientAddress:         " + clientAddress );
+                sb.append( "\n\t" + "nonce:                 " + request.getNonce() );
+                sb.append( "\n\t" + "kdcOptions:            " + request.getKdcOptions() );
+                sb.append( "\n\t" + "clientPrincipal:       " + request.getClientPrincipal() );
+                sb.append( "\n\t" + "serverPrincipal:       " + request.getServerPrincipal() );
+                sb.append( "\n\t" + "encryptionType:        " + getEncryptionTypes( request ) );
+                sb.append( "\n\t" + "realm:                 " + request.getRealm() );
+                sb.append( "\n\t" + "from time:             " + request.getFrom() );
+                sb.append( "\n\t" + "till time:             " + request.getTill() );
+                sb.append( "\n\t" + "renew-till time:       " + request.getRtime() );
+                sb.append( "\n\t" + "hostAddresses:         " + request.getAddresses() );
+
+                LOG.debug( sb.toString() );
+            }
+            catch ( Exception e )
+            {
+                // This is a monitor.  No exceptions should bubble up.
+                LOG.error( "Error in request monitor", e );
+            }
+        }
+    }
+    
+    private static void monitorContext( AuthenticationContext authContext )
+    {
+        try
+        {
+            long clockSkew = authContext.getConfig().getAllowableClockSkew();
+            InetAddress clientAddress = authContext.getClientAddress();
+
+            StringBuilder sb = new StringBuilder();
+
+            sb.append( "Monitoring " + SERVICE_NAME + " context:" );
+
+            sb.append( "\n\t" + "clockSkew              " + clockSkew );
+            sb.append( "\n\t" + "clientAddress          " + clientAddress );
+
+            KerberosPrincipal clientPrincipal = authContext.getClientEntry().getPrincipal();
+            PrincipalStoreEntry clientEntry = authContext.getClientEntry();
+
+            sb.append( "\n\t" + "principal              " + clientPrincipal );
+            sb.append( "\n\t" + "cn                     " + clientEntry.getCommonName() );
+            sb.append( "\n\t" + "realm                  " + clientEntry.getRealmName() );
+            sb.append( "\n\t" + "principal              " + clientEntry.getPrincipal() );
+            sb.append( "\n\t" + "SAM type               " + clientEntry.getSamType() );
+
+            KerberosPrincipal serverPrincipal = authContext.getRequest().getServerPrincipal();
+            PrincipalStoreEntry serverEntry = authContext.getServerEntry();
+
+            sb.append( "\n\t" + "principal              " + serverPrincipal );
+            sb.append( "\n\t" + "cn                     " + serverEntry.getCommonName() );
+            sb.append( "\n\t" + "realm                  " + serverEntry.getRealmName() );
+            sb.append( "\n\t" + "principal              " + serverEntry.getPrincipal() );
+            sb.append( "\n\t" + "SAM type               " + serverEntry.getSamType() );
+
+            EncryptionType encryptionType = authContext.getEncryptionType();
+            int clientKeyVersion = clientEntry.getKeyMap().get( encryptionType ).getKeyVersion();
+            int serverKeyVersion = serverEntry.getKeyMap().get( encryptionType ).getKeyVersion();
+            sb.append( "\n\t" + "Request key type       " + encryptionType );
+            sb.append( "\n\t" + "Client key version     " + clientKeyVersion );
+            sb.append( "\n\t" + "Server key version     " + serverKeyVersion );
+
+            LOG.debug( sb.toString() );
+        }
+        catch ( Exception e )
+        {
+            // This is a monitor.  No exceptions should bubble up.
+            LOG.error( "Error in context monitor", e );
+        }
+    }
+    
+    
+    private static void monitorReply( KdcContext kdcContext )
+    {
+        Object reply = kdcContext.getReply();
+
+        if ( LOG.isDebugEnabled() )
+        {
+            if ( reply instanceof KdcReply )
+            {
+                KdcReply success = ( KdcReply ) reply;
+
+                try
+                {
+                    StringBuffer sb = new StringBuffer();
+
+                    sb.append( "Responding with " + SERVICE_NAME + " reply:" );
+                    sb.append( "\n\t" + "messageType:           " + success.getMessageType() );
+                    sb.append( "\n\t" + "protocolVersionNumber: " + success.getProtocolVersionNumber() );
+                    sb.append( "\n\t" + "nonce:                 " + success.getNonce() );
+                    sb.append( "\n\t" + "clientPrincipal:       " + success.getClientPrincipal() );
+                    sb.append( "\n\t" + "client realm:          " + success.getClientRealm() );
+                    sb.append( "\n\t" + "serverPrincipal:       " + success.getServerPrincipal() );
+                    sb.append( "\n\t" + "server realm:          " + success.getServerRealm() );
+                    sb.append( "\n\t" + "auth time:             " + success.getAuthTime() );
+                    sb.append( "\n\t" + "start time:            " + success.getStartTime() );
+                    sb.append( "\n\t" + "end time:              " + success.getEndTime() );
+                    sb.append( "\n\t" + "renew-till time:       " + success.getRenewTill() );
+                    sb.append( "\n\t" + "hostAddresses:         " + success.getClientAddresses() );
+
+                    LOG.debug( sb.toString() );
+                }
+                catch ( Exception e )
+                {
+                    // This is a monitor.  No exceptions should bubble up.
+                    LOG.error( "Error in reply monitor", e );
+                }
+            }
+        }
+    }
+    
+    /**
+     * Get a PrincipalStoreEntry given a principal.  The ErrorType is used to indicate
+     * whether any resulting error pertains to a server or client.
+     */
+    private static PrincipalStoreEntry getEntry( KerberosPrincipal principal, PrincipalStore store, ErrorType errorType )
+        throws KerberosException
+    {
+        PrincipalStoreEntry entry = null;
+
+        try
+        {
+            entry = store.getPrincipal( principal );
+        }
+        catch ( Exception e )
+        {
+            throw new KerberosException( errorType, e );
+        }
+
+        if ( entry == null )
+        {
+            throw new KerberosException( errorType );
+        }
+
+        if ( entry.getKeyMap() == null || entry.getKeyMap().isEmpty() )
+        {
+            throw new KerberosException( ErrorType.KDC_ERR_NULL_KEY );
+        }
+
+        return entry;
+    }
+    
+    
+    /**
+     * Find the best encryption type, comparing the requested type with
+     * configured types.
+     */
+    protected static EncryptionType getBestEncryptionType( EncryptionType[] requestedTypes, EncryptionType[] configuredTypes )
+    {
+        for ( EncryptionType requestedType:requestedTypes )
+        {
+            for ( EncryptionType configuredType:configuredTypes )
+            {
+                if ( requestedType == configuredType )
+                {
+                    return configuredType;
+                }
+            }
+        }
+
+        return null;
+    }
+    
+
+    /**
+     * Prepares a pre-authentication error message containing required
+     * encryption types.
+     *
+     * @param encryptionTypes
+     * @return The error message as bytes.
+     */
+    private static byte[] preparePreAuthenticationError( EncryptionType[] encryptionTypes )
+    {
+        PaData[] paDataSequence = new PaData[2];
+
+        PaData paData = new PaData();
+        paData.setPaDataType( PaDataType.PA_ENC_TIMESTAMP );
+        paData.setPaDataValue( new byte[0] );
+
+        paDataSequence[0] = paData;
+
+        EncryptionTypeInfoEntry[] entries = new EncryptionTypeInfoEntry[encryptionTypes.length];
+        for ( int ii = 0; ii < encryptionTypes.length; ii++ )
+        {
+            entries[ii] = new EncryptionTypeInfoEntry( encryptionTypes[ii], null );
+        }
+
+        byte[] encTypeInfo = null;
+
+        try
+        {
+            encTypeInfo = EncryptionTypeInfoEncoder.encode( entries );
+        }
+        catch ( IOException ioe )
+        {
+            return null;
+        }
+
+        PaData encType = new PaData();
+        encType.setPaDataType( PaDataType.PA_ENCTYPE_INFO );
+        encType.setPaDataValue( encTypeInfo );
+
+        paDataSequence[1] = encType;
+
+        try
+        {
+            return PreAuthenticationDataEncoder.encode( paDataSequence );
+        }
+        catch ( IOException ioe )
+        {
+            return null;
+        }
+    }
+    
+    
+    protected static String getEncryptionTypes( KdcRequest request )
+    {
+        EncryptionType[] etypes = request.getEType();
+
+        StringBuilder sb = new StringBuilder();
+        boolean isFirst = true;
+
+        for ( EncryptionType etype:etypes )
+        {
+            if ( isFirst )
+            {
+                isFirst = false;
+            }
+            else
+            {
+                sb.append( ", " );
+            }
+            
+            sb.append( etype );
+        }
+
+        return sb.toString();
     }
 }

Modified: directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/BuildReply.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/BuildReply.java?rev=589782&r1=589781&r2=589782&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/BuildReply.java (original)
+++ directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/BuildReply.java Mon Oct 29 11:17:35 2007
@@ -46,22 +46,22 @@
         Ticket newTicket = tgsContext.getNewTicket();
 
         TicketGrantReply reply = new TicketGrantReply();
-        reply.setClientPrincipal( tgt.getClientPrincipal() );
+        reply.setClientPrincipal( tgt.getEncTicketPart().getClientPrincipal() );
         reply.setTicket( newTicket );
-        reply.setKey( newTicket.getSessionKey() );
+        reply.setKey( newTicket.getEncTicketPart().getSessionKey() );
         reply.setNonce( request.getNonce() );
         // TODO - resp.last-req := fetch_last_request_info(client); requires store
         reply.setLastRequest( new LastRequest() );
-        reply.setFlags( newTicket.getFlags() );
-        reply.setClientAddresses( newTicket.getClientAddresses() );
-        reply.setAuthTime( newTicket.getAuthTime() );
-        reply.setStartTime( newTicket.getStartTime() );
-        reply.setEndTime( newTicket.getEndTime() );
+        reply.setFlags( newTicket.getEncTicketPart().getFlags() );
+        reply.setClientAddresses( newTicket.getEncTicketPart().getClientAddresses() );
+        reply.setAuthTime( newTicket.getEncTicketPart().getAuthTime() );
+        reply.setStartTime( newTicket.getEncTicketPart().getStartTime() );
+        reply.setEndTime( newTicket.getEncTicketPart().getEndTime() );
         reply.setServerPrincipal( newTicket.getServerPrincipal() );
 
-        if ( newTicket.getFlag( TicketFlags.RENEWABLE ) )
+        if ( newTicket.getEncTicketPart().getFlags().get( TicketFlags.RENEWABLE ) )
         {
-            reply.setRenewTill( newTicket.getRenewTill() );
+            reply.setRenewTill( newTicket.getEncTicketPart().getRenewTill() );
         }
 
         tgsContext.setReply( reply );

Modified: directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/GenerateTicket.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/GenerateTicket.java?rev=589782&r1=589781&r2=589782&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/GenerateTicket.java (original)
+++ directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/GenerateTicket.java Mon Oct 29 11:17:35 2007
@@ -74,20 +74,20 @@
 
         EncTicketPartModifier newTicketBody = new EncTicketPartModifier();
 
-        newTicketBody.setClientAddresses( tgt.getClientAddresses() );
+        newTicketBody.setClientAddresses( tgt.getEncTicketPart().getClientAddresses() );
 
         processFlags( config, request, tgt, newTicketBody );
 
         EncryptionKey sessionKey = RandomKeyFactory.getRandomKey( tgsContext.getEncryptionType() );
         newTicketBody.setSessionKey( sessionKey );
 
-        newTicketBody.setClientPrincipal( tgt.getClientPrincipal() );
+        newTicketBody.setClientPrincipal( tgt.getEncTicketPart().getClientPrincipal() );
 
         if ( request.getEncAuthorizationData() != null )
         {
             AuthorizationData authData = ( AuthorizationData ) cipherTextHandler.unseal( AuthorizationData.class,
                 authenticator.getSubSessionKey(), request.getEncAuthorizationData(), KeyUsage.NUMBER4 );
-            authData.add( tgt.getAuthorizationData() );
+            authData.add( tgt.getEncTicketPart().getAuthorizationData() );
             newTicketBody.setAuthorizationData( authData );
         }
 
@@ -130,7 +130,7 @@
     private void processFlags( KdcServer config, KdcRequest request, Ticket tgt,
         EncTicketPartModifier newTicketBody ) throws KerberosException
     {
-        if ( tgt.getFlag( TicketFlags.PRE_AUTHENT ) )
+        if ( tgt.getEncTicketPart().getFlags().get( TicketFlags.PRE_AUTHENT ) )
         {
             newTicketBody.setFlag( TicketFlags.PRE_AUTHENT );
         }
@@ -142,7 +142,7 @@
                 throw new KerberosException( ErrorType.KDC_ERR_POLICY );
             }
 
-            if ( !tgt.getFlag( TicketFlags.FORWARDABLE ) )
+            if ( !tgt.getEncTicketPart().getFlags().get( TicketFlags.FORWARDABLE ) )
             {
                 throw new KerberosException( ErrorType.KDC_ERR_BADOPTION );
             }
@@ -157,7 +157,7 @@
                 throw new KerberosException( ErrorType.KDC_ERR_POLICY );
             }
 
-            if ( !tgt.getFlag( TicketFlags.FORWARDABLE ) )
+            if ( !tgt.getEncTicketPart().getFlags().get( TicketFlags.FORWARDABLE ) )
             {
                 throw new KerberosException( ErrorType.KDC_ERR_BADOPTION );
             }
@@ -178,7 +178,7 @@
             newTicketBody.setFlag( TicketFlags.FORWARDED );
         }
 
-        if ( tgt.getFlag( TicketFlags.FORWARDED ) )
+        if ( tgt.getEncTicketPart().getFlags().get( TicketFlags.FORWARDED ) )
         {
             newTicketBody.setFlag( TicketFlags.FORWARDED );
         }
@@ -190,7 +190,7 @@
                 throw new KerberosException( ErrorType.KDC_ERR_POLICY );
             }
 
-            if ( !tgt.getFlag( TicketFlags.PROXIABLE ) )
+            if ( !tgt.getEncTicketPart().getFlags().get( TicketFlags.PROXIABLE ) )
             {
                 throw new KerberosException( ErrorType.KDC_ERR_BADOPTION );
             }
@@ -205,7 +205,7 @@
                 throw new KerberosException( ErrorType.KDC_ERR_POLICY );
             }
 
-            if ( !tgt.getFlag( TicketFlags.PROXIABLE ) )
+            if ( !tgt.getEncTicketPart().getFlags().get( TicketFlags.PROXIABLE ) )
             {
                 throw new KerberosException( ErrorType.KDC_ERR_BADOPTION );
             }
@@ -233,7 +233,7 @@
                 throw new KerberosException( ErrorType.KDC_ERR_POLICY );
             }
 
-            if ( !tgt.getFlag( TicketFlags.MAY_POSTDATE ) )
+            if ( !tgt.getEncTicketPart().getFlags().get( TicketFlags.MAY_POSTDATE ) )
             {
                 throw new KerberosException( ErrorType.KDC_ERR_BADOPTION );
             }
@@ -258,7 +258,7 @@
                 throw new KerberosException( ErrorType.KDC_ERR_POLICY );
             }
 
-            if ( !tgt.getFlag( TicketFlags.MAY_POSTDATE ) )
+            if ( !tgt.getEncTicketPart().getFlags().get( TicketFlags.MAY_POSTDATE ) )
             {
                 throw new KerberosException( ErrorType.KDC_ERR_BADOPTION );
             }
@@ -276,24 +276,20 @@
                 throw new KerberosException( ErrorType.KDC_ERR_POLICY );
             }
 
-            if ( !tgt.getFlag( TicketFlags.INVALID ) )
+            if ( !tgt.getEncTicketPart().getFlags().get( TicketFlags.INVALID ) )
             {
                 throw new KerberosException( ErrorType.KDC_ERR_POLICY );
             }
 
-            KerberosTime startTime = ( tgt.getStartTime() != null ) ? tgt.getStartTime() : tgt.getAuthTime();
+            KerberosTime startTime = ( tgt.getEncTicketPart().getStartTime() != null ) ? 
+                    tgt.getEncTicketPart().getStartTime() : 
+                        tgt.getEncTicketPart().getAuthTime();
 
             if ( startTime.greaterThan( new KerberosTime() ) )
             {
                 throw new KerberosException( ErrorType.KRB_AP_ERR_TKT_NYV );
             }
 
-            /*
-             * if (check_hot_list(tgt)) then
-             *         error_out(KRB_AP_ERR_REPEAT);
-             * endif
-             */
-
             echoTicket( newTicketBody, tgt );
             newTicketBody.clearFlag( TicketFlags.INVALID );
         }
@@ -310,7 +306,7 @@
     {
         KerberosTime now = new KerberosTime();
 
-        newTicketBody.setAuthTime( tgt.getAuthTime() );
+        newTicketBody.setAuthTime( tgt.getEncTicketPart().getAuthTime() );
 
         KerberosTime startTime = request.getFrom();
 
@@ -334,7 +330,7 @@
          */
         if ( startTime != null && startTime.greaterThan( now )
             && !startTime.isInClockSkew( config.getAllowableClockSkew() )
-            && ( !request.getOption( KdcOptions.POSTDATED ) || !tgt.getFlag( TicketFlags.MAY_POSTDATE ) ) )
+            && ( !request.getOption( KdcOptions.POSTDATED ) || !tgt.getEncTicketPart().getFlags().get( TicketFlags.MAY_POSTDATE ) ) )
         {
             throw new KerberosException( ErrorType.KDC_ERR_CANNOT_POSTDATE );
         }
@@ -349,12 +345,12 @@
                 throw new KerberosException( ErrorType.KDC_ERR_POLICY );
             }
 
-            if ( !tgt.getFlag( TicketFlags.RENEWABLE ) )
+            if ( !tgt.getEncTicketPart().getFlags().get( TicketFlags.RENEWABLE ) )
             {
                 throw new KerberosException( ErrorType.KDC_ERR_BADOPTION );
             }
 
-            if ( tgt.getRenewTill().lessThan( now ) )
+            if ( tgt.getEncTicketPart().getRenewTill().lessThan( now ) )
             {
                 throw new KerberosException( ErrorType.KRB_AP_ERR_TKT_EXPIRED );
             }
@@ -363,11 +359,13 @@
 
             newTicketBody.setStartTime( now );
 
-            KerberosTime tgtStartTime = ( tgt.getStartTime() != null ) ? tgt.getStartTime() : tgt.getAuthTime();
+            KerberosTime tgtStartTime = ( tgt.getEncTicketPart().getStartTime() != null ) ? 
+                tgt.getEncTicketPart().getStartTime() : 
+                    tgt.getEncTicketPart().getAuthTime();
 
-            long oldLife = tgt.getEndTime().getTime() - tgtStartTime.getTime();
+            long oldLife = tgt.getEncTicketPart().getEndTime().getTime() - tgtStartTime.getTime();
 
-            kerberosEndTime = new KerberosTime( Math.min( tgt.getRenewTill().getTime(), now.getTime() + oldLife ) );
+            kerberosEndTime = new KerberosTime( Math.min( tgt.getEncTicketPart().getRenewTill().getTime(), now.getTime() + oldLife ) );
             newTicketBody.setEndTime( kerberosEndTime );
         }
         else
@@ -395,13 +393,13 @@
             List<KerberosTime> minimizer = new ArrayList<KerberosTime>();
             minimizer.add( till );
             minimizer.add( new KerberosTime( startTime.getTime() + config.getMaximumTicketLifetime() ) );
-            minimizer.add( tgt.getEndTime() );
+            minimizer.add( tgt.getEncTicketPart().getEndTime() );
             kerberosEndTime = Collections.min( minimizer );
 
             newTicketBody.setEndTime( kerberosEndTime );
 
             if ( request.getOption( KdcOptions.RENEWABLE_OK ) && kerberosEndTime.lessThan( request.getTill() )
-                && tgt.getFlag( TicketFlags.RENEWABLE ) )
+                && tgt.getEncTicketPart().getFlags().get( TicketFlags.RENEWABLE ) )
             {
                 if ( !config.isRenewableAllowed() )
                 {
@@ -410,7 +408,7 @@
 
                 // We set the RENEWABLE option for later processing.                           
                 request.setOption( KdcOptions.RENEWABLE );
-                long rtime = Math.min( request.getTill().getTime(), tgt.getRenewTill().getTime() );
+                long rtime = Math.min( request.getTill().getTime(), tgt.getEncTicketPart().getRenewTill().getTime() );
                 renewalTime = new KerberosTime( rtime );
             }
         }
@@ -430,7 +428,7 @@
             rtime = renewalTime;
         }
 
-        if ( request.getOption( KdcOptions.RENEWABLE ) && tgt.getFlag( TicketFlags.RENEWABLE ) )
+        if ( request.getOption( KdcOptions.RENEWABLE ) && tgt.getEncTicketPart().getFlags().get( TicketFlags.RENEWABLE ) )
         {
             if ( !config.isRenewableAllowed() )
             {
@@ -455,7 +453,7 @@
             }
 
             minimizer.add( new KerberosTime( startTime.getTime() + config.getMaximumRenewableLifetime() ) );
-            minimizer.add( tgt.getRenewTill() );
+            minimizer.add( tgt.getEncTicketPart().getRenewTill() );
             newTicketBody.setRenewTill( Collections.min( minimizer ) );
         }
 
@@ -493,21 +491,22 @@
     private void processTransited( EncTicketPartModifier newTicketBody, Ticket tgt )
     {
         // TODO - currently no transited support other than local
-        newTicketBody.setTransitedEncoding( tgt.getTransitedEncoding() );
+        newTicketBody.setTransitedEncoding( tgt.getEncTicketPart().getTransitedEncoding() );
     }
 
 
     protected void echoTicket( EncTicketPartModifier newTicketBody, Ticket tgt )
     {
-        newTicketBody.setAuthorizationData( tgt.getAuthorizationData() );
-        newTicketBody.setAuthTime( tgt.getAuthTime() );
-        newTicketBody.setClientAddresses( tgt.getClientAddresses() );
-        newTicketBody.setClientPrincipal( tgt.getClientPrincipal() );
-        newTicketBody.setEndTime( tgt.getEndTime() );
-        newTicketBody.setFlags( tgt.getFlags() );
-        newTicketBody.setRenewTill( tgt.getRenewTill() );
-        newTicketBody.setSessionKey( tgt.getSessionKey() );
-        newTicketBody.setTransitedEncoding( tgt.getTransitedEncoding() );
+        EncTicketPart encTicketpart = tgt.getEncTicketPart();
+        newTicketBody.setAuthorizationData( encTicketpart.getAuthorizationData() );
+        newTicketBody.setAuthTime( encTicketpart.getAuthTime() );
+        newTicketBody.setClientAddresses( encTicketpart.getClientAddresses() );
+        newTicketBody.setClientPrincipal( encTicketpart.getClientPrincipal() );
+        newTicketBody.setEndTime( encTicketpart.getEndTime() );
+        newTicketBody.setFlags( encTicketpart.getFlags() );
+        newTicketBody.setRenewTill( encTicketpart.getRenewTill() );
+        newTicketBody.setSessionKey( encTicketpart.getSessionKey() );
+        newTicketBody.setTransitedEncoding( encTicketpart.getTransitedEncoding() );
     }
 
 

Modified: directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/MonitorContext.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/MonitorContext.java?rev=589782&r1=589781&r2=589782&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/MonitorContext.java (original)
+++ directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/MonitorContext.java Mon Oct 29 11:17:35 2007
@@ -73,12 +73,12 @@
                 long clockSkew = tgsContext.getConfig().getAllowableClockSkew();
                 ChecksumType checksumType = tgsContext.getAuthenticator().getChecksum().getChecksumType();
                 InetAddress clientAddress = tgsContext.getClientAddress();
-                HostAddresses clientAddresses = tgt.getClientAddresses();
+                HostAddresses clientAddresses = tgt.getEncTicketPart().getClientAddresses();
 
                 boolean caddrContainsSender = false;
-                if ( tgt.getClientAddresses() != null )
+                if ( tgt.getEncTicketPart().getClientAddresses() != null )
                 {
-                    caddrContainsSender = tgt.getClientAddresses().contains( new HostAddress( clientAddress ) );
+                    caddrContainsSender = tgt.getEncTicketPart().getClientAddresses().contains( new HostAddress( clientAddress ) );
                 }
 
                 StringBuffer sb = new StringBuffer();

Modified: directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/SealReply.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/SealReply.java?rev=589782&r1=589781&r2=589782&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/SealReply.java (original)
+++ directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/kdc/ticketgrant/SealReply.java Mon Oct 29 11:17:35 2007
@@ -56,7 +56,7 @@
         }
         else
         {
-            encryptedData = cipherTextHandler.seal( tgt.getSessionKey(), reply, KeyUsage.NUMBER8 );
+            encryptedData = cipherTextHandler.seal( tgt.getEncTicketPart().getSessionKey(), reply, KeyUsage.NUMBER8 );
         }
 
         reply.setEncPart( encryptedData );

Modified: directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/protocol/KerberosProtocolHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/protocol/KerberosProtocolHandler.java?rev=589782&r1=589781&r2=589782&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/protocol/KerberosProtocolHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-kerberos/src/main/java/org/apache/directory/server/kerberos/protocol/KerberosProtocolHandler.java Mon Oct 29 11:17:35 2007
@@ -27,9 +27,10 @@
 
 import org.apache.directory.server.kerberos.kdc.KdcServer;
 import org.apache.directory.server.kerberos.kdc.authentication.AuthenticationContext;
-import org.apache.directory.server.kerberos.kdc.authentication.AuthenticationServiceChain;
+import org.apache.directory.server.kerberos.kdc.authentication.AuthenticationService;
 import org.apache.directory.server.kerberos.kdc.ticketgrant.TicketGrantingContext;
 import org.apache.directory.server.kerberos.kdc.ticketgrant.TicketGrantingServiceChain;
+import org.apache.directory.server.kerberos.shared.KerberosMessageType;
 import org.apache.directory.server.kerberos.shared.exceptions.ErrorType;
 import org.apache.directory.server.kerberos.shared.exceptions.KerberosException;
 import org.apache.directory.server.kerberos.shared.messages.ErrorMessage;
@@ -60,7 +61,6 @@
 
     private KdcServer config;
     private PrincipalStore store;
-    private IoHandlerCommand authService;
     private IoHandlerCommand tgsService;
     private String contextKey = "context";
 
@@ -76,7 +76,6 @@
         this.config = config;
         this.store = store;
 
-        authService = new AuthenticationServiceChain();
         tgsService = new TicketGrantingServiceChain();
     }
 
@@ -145,13 +144,13 @@
         InetAddress clientAddress = ( ( InetSocketAddress ) session.getRemoteAddress() ).getAddress();
         KdcRequest request = ( KdcRequest ) message;
 
-        int messageType = request.getMessageType().getOrdinal();
+        KerberosMessageType messageType = request.getMessageType();
 
         try
         {
             switch ( messageType )
             {
-                case 10:
+                case AS_REQ :
                     AuthenticationContext authContext = new AuthenticationContext();
                     authContext.setConfig( config );
                     authContext.setStore( store );
@@ -159,12 +158,12 @@
                     authContext.setRequest( request );
                     session.setAttribute( getContextKey(), authContext );
 
-                    authService.execute( null, session, message );
+                    AuthenticationService.execute( session, authContext, message );
 
                     session.write( authContext.getReply() );
                     break;
 
-                case 12:
+                case TGS_REQ:
                     TicketGrantingContext tgsContext = new TicketGrantingContext();
                     tgsContext.setConfig( config );
                     tgsContext.setStore( store );
@@ -177,8 +176,8 @@
                     session.write( tgsContext.getReply() );
                     break;
 
-                case 11:
-                case 13:
+                case AS_REP:
+                case TGS_REP:
                     throw new KerberosException( ErrorType.KRB_AP_ERR_BADDIRECTION );
 
                 default:

Modified: directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AbstractTicketGrantingServiceTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AbstractTicketGrantingServiceTest.java?rev=589782&r1=589781&r2=589782&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AbstractTicketGrantingServiceTest.java (original)
+++ directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AbstractTicketGrantingServiceTest.java Mon Oct 29 11:17:35 2007
@@ -30,6 +30,8 @@
 
 import junit.framework.TestCase;
 
+import org.apache.directory.server.kerberos.shared.KerberosConstants;
+import org.apache.directory.server.kerberos.shared.KerberosMessageType;
 import org.apache.directory.server.kerberos.shared.crypto.checksum.ChecksumHandler;
 import org.apache.directory.server.kerberos.shared.crypto.checksum.ChecksumType;
 import org.apache.directory.server.kerberos.shared.crypto.encryption.CipherTextHandler;
@@ -41,13 +43,11 @@
 import org.apache.directory.server.kerberos.shared.io.encoder.KdcRequestEncoder;
 import org.apache.directory.server.kerberos.shared.messages.ApplicationRequest;
 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.components.Authenticator;
 import org.apache.directory.server.kerberos.shared.messages.components.AuthenticatorModifier;
 import org.apache.directory.server.kerberos.shared.messages.components.EncTicketPart;
 import org.apache.directory.server.kerberos.shared.messages.components.EncTicketPartModifier;
 import org.apache.directory.server.kerberos.shared.messages.components.Ticket;
-import org.apache.directory.server.kerberos.shared.messages.components.TicketModifier;
 import org.apache.directory.server.kerberos.shared.messages.value.ApOptions;
 import org.apache.directory.server.kerberos.shared.messages.value.Checksum;
 import org.apache.directory.server.kerberos.shared.messages.value.EncryptedData;
@@ -75,7 +75,9 @@
  * for generating message components.
  * 
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- * @version $Rev$, $Date$
+ * @version $Rev$, $Date$        Ticket ticket = ticketModifier.getTicket();
+
+
  */
 public abstract class AbstractTicketGrantingServiceTest extends TestCase
 {
@@ -154,12 +156,7 @@
 
         EncryptedData encryptedTicketPart = lockBox.seal( serverKey, encTicketPart, KeyUsage.NUMBER2 );
 
-        TicketModifier ticketModifier = new TicketModifier();
-        ticketModifier.setTicketVersionNumber( 5 );
-        ticketModifier.setServerPrincipal( serverPrincipal );
-        ticketModifier.setEncPart( encryptedTicketPart );
-
-        Ticket ticket = ticketModifier.getTicket();
+        Ticket ticket = new Ticket( KerberosConstants.KERBEROS_V5, serverPrincipal, encryptedTicketPart );
 
         ticket.setEncTicketPart( encTicketPart );
 
@@ -200,12 +197,10 @@
 
         EncryptedData encryptedTicketPart = lockBox.seal( serverKey, encTicketPart, KeyUsage.NUMBER2 );
 
-        TicketModifier ticketModifier = new TicketModifier();
-        ticketModifier.setTicketVersionNumber( 5 );
-        ticketModifier.setServerPrincipal( serverPrincipal );
-        ticketModifier.setEncPart( encryptedTicketPart );
-
-        Ticket ticket = ticketModifier.getTicket();
+        Ticket ticket = new Ticket();
+        ticket.setTktVno( 5 );
+        ticket.setServerPrincipal( serverPrincipal );
+        ticket.setEncPart( encryptedTicketPart );
 
         ticket.setEncTicketPart( encTicketPart );
 
@@ -226,17 +221,17 @@
         throws Exception
     {
         // Get the session key from the service ticket.
-        sessionKey = tgt.getSessionKey();
+        sessionKey = tgt.getEncTicketPart().getSessionKey();
 
         // Generate a new sequence number.
         sequenceNumber = random.nextInt();
         now = new KerberosTime();
 
-        EncryptedData authenticator = getAuthenticator( tgt.getClientPrincipal(), requestBody, checksumType );
+        EncryptedData authenticator = getAuthenticator( tgt.getEncTicketPart().getClientPrincipal(), requestBody, checksumType );
 
         PaData[] paData = getPreAuthenticationData( tgt, authenticator );
 
-        return new KdcRequest( 5, MessageType.KRB_TGS_REQ, paData, requestBody );
+        return new KdcRequest( 5, KerberosMessageType.TGS_REQ, paData, requestBody );
     }
 
 
@@ -298,7 +293,7 @@
         throws IOException
     {
         ApplicationRequest applicationRequest = new ApplicationRequest();
-        applicationRequest.setMessageType( MessageType.KRB_AP_REQ );
+        applicationRequest.setMessageType( KerberosMessageType.AP_REQ );
         applicationRequest.setProtocolVersionNumber( 5 );
         applicationRequest.setApOptions( new ApOptions() );
         applicationRequest.setTicket( ticket );

Modified: directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationEncryptionTypeTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationEncryptionTypeTest.java?rev=589782&r1=589781&r2=589782&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationEncryptionTypeTest.java (original)
+++ directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationEncryptionTypeTest.java Mon Oct 29 11:17:35 2007
@@ -27,6 +27,8 @@
 import javax.security.auth.kerberos.KerberosPrincipal;
 
 import org.apache.directory.server.kerberos.kdc.KdcServer;
+import org.apache.directory.server.kerberos.shared.KerberosConstants;
+import org.apache.directory.server.kerberos.shared.KerberosMessageType;
 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.KerberosKeyFactory;
@@ -35,7 +37,6 @@
 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;
@@ -102,7 +103,7 @@
         String passPhrase = "secret";
         PaData[] paData = getPreAuthEncryptedTimeStamp( clientPrincipal, passPhrase );
 
-        KdcRequest message = new KdcRequest( 5, MessageType.KRB_AS_REQ, paData, modifier.getRequestBody() );
+        KdcRequest message = new KdcRequest( KerberosConstants.KERBEROS_V5, KerberosMessageType.AS_REQ, paData, modifier.getRequestBody() );
 
         handler.messageReceived( session, message );
 
@@ -151,14 +152,14 @@
         KerberosTime timeStamp = new KerberosTime();
         PaData[] paData = getPreAuthEncryptedTimeStamp( clientKey, timeStamp );
 
-        KdcRequest message = new KdcRequest( 5, MessageType.KRB_AS_REQ, paData, modifier.getRequestBody() );
+        KdcRequest message = new KdcRequest( KerberosConstants.KERBEROS_V5, KerberosMessageType.AS_REQ, paData, modifier.getRequestBody() );
 
         handler.messageReceived( session, message );
 
         AuthenticationReply reply = ( AuthenticationReply ) session.getMessage();
 
         assertTrue( "Requested end time", requestedEndTime.equals( reply.getEndTime() ) );
-        assertTrue( "PRE_AUTHENT flag", reply.getTicket().getFlags().get( TicketFlags.PRE_AUTHENT ) );
+        assertTrue( "PRE_AUTHENT flag", reply.getTicket().getEncTicketPart().getFlags().get( TicketFlags.PRE_AUTHENT ) );
         assertEquals( "Encryption type", EncryptionType.AES128_CTS_HMAC_SHA1_96, reply.getEncPart().getEType() );
     }
 
@@ -203,14 +204,14 @@
         KerberosTime timeStamp = new KerberosTime();
         PaData[] paData = getPreAuthEncryptedTimeStamp( clientKey, timeStamp );
 
-        KdcRequest message = new KdcRequest( 5, MessageType.KRB_AS_REQ, paData, modifier.getRequestBody() );
+        KdcRequest message = new KdcRequest( KerberosConstants.KERBEROS_V5, KerberosMessageType.AS_REQ, paData, modifier.getRequestBody() );
 
         handler.messageReceived( session, message );
 
         AuthenticationReply reply = ( AuthenticationReply ) session.getMessage();
 
         assertTrue( "Requested end time", requestedEndTime.equals( reply.getEndTime() ) );
-        assertTrue( "PRE_AUTHENT flag", reply.getTicket().getFlags().get( TicketFlags.PRE_AUTHENT ) );
+        assertTrue( "PRE_AUTHENT flag", reply.getTicket().getEncTicketPart().getFlags().get( TicketFlags.PRE_AUTHENT ) );
         assertEquals( "Encryption type", EncryptionType.AES128_CTS_HMAC_SHA1_96, reply.getEncPart().getEType() );
 
         assertEquals( "Nonce", nonce, reply.getNonce() );
@@ -245,7 +246,7 @@
         String passPhrase = "secret";
         PaData[] paData = getPreAuthEncryptedTimeStamp( clientPrincipal, passPhrase );
 
-        KdcRequest message = new KdcRequest( 5, MessageType.KRB_AS_REQ, paData, modifier.getRequestBody() );
+        KdcRequest message = new KdcRequest( KerberosConstants.KERBEROS_V5, KerberosMessageType.AS_REQ, paData, modifier.getRequestBody() );
 
         handler.messageReceived( session, message );
 

Modified: directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationPolicyTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationPolicyTest.java?rev=589782&r1=589781&r2=589782&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationPolicyTest.java (original)
+++ directory/apacheds/branches/bigbang/protocol-kerberos/src/test/java/org/apache/directory/server/kerberos/protocol/AuthenticationPolicyTest.java Mon Oct 29 11:17:35 2007
@@ -21,9 +21,10 @@
 
 
 import org.apache.directory.server.kerberos.kdc.KdcServer;
+import org.apache.directory.server.kerberos.shared.KerberosConstants;
+import org.apache.directory.server.kerberos.shared.KerberosMessageType;
 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.KdcOptions;
 import org.apache.directory.server.kerberos.shared.messages.value.KerberosTime;
 import org.apache.directory.server.kerberos.shared.messages.value.RequestBodyModifier;
@@ -82,7 +83,7 @@
         KerberosTime requestedEndTime = new KerberosTime( now + 1 * KerberosTime.DAY );
         modifier.setTill( requestedEndTime );
 
-        KdcRequest message = new KdcRequest( 5, MessageType.KRB_AS_REQ, null, modifier.getRequestBody() );
+        KdcRequest message = new KdcRequest( KerberosConstants.KERBEROS_V5, KerberosMessageType.AS_REQ, null, modifier.getRequestBody() );
 
         handler.messageReceived( session, message );
 
@@ -117,7 +118,7 @@
         KerberosTime requestedEndTime = new KerberosTime( now + 1 * KerberosTime.DAY );
         modifier.setTill( requestedEndTime );
 
-        KdcRequest message = new KdcRequest( 5, MessageType.KRB_AS_REQ, null, modifier.getRequestBody() );
+        KdcRequest message = new KdcRequest( KerberosConstants.KERBEROS_V5, KerberosMessageType.AS_REQ, null, modifier.getRequestBody() );
 
         handler.messageReceived( session, message );
 
@@ -152,7 +153,7 @@
         KerberosTime requestedEndTime = new KerberosTime( now + 1 * KerberosTime.DAY );
         modifier.setTill( requestedEndTime );
 
-        KdcRequest message = new KdcRequest( 5, MessageType.KRB_AS_REQ, null, modifier.getRequestBody() );
+        KdcRequest message = new KdcRequest( KerberosConstants.KERBEROS_V5, KerberosMessageType.AS_REQ, null, modifier.getRequestBody() );
 
         handler.messageReceived( session, message );
 
@@ -187,7 +188,7 @@
         KerberosTime requestedEndTime = new KerberosTime( now + 1 * KerberosTime.DAY );
         modifier.setTill( requestedEndTime );
 
-        KdcRequest message = new KdcRequest( 5, MessageType.KRB_AS_REQ, null, modifier.getRequestBody() );
+        KdcRequest message = new KdcRequest( KerberosConstants.KERBEROS_V5, KerberosMessageType.AS_REQ, null, modifier.getRequestBody() );
 
         handler.messageReceived( session, message );
 
@@ -222,7 +223,7 @@
         KerberosTime requestedEndTime = new KerberosTime( now + KerberosTime.WEEK );
         modifier.setTill( requestedEndTime );
 
-        KdcRequest message = new KdcRequest( 5, MessageType.KRB_AS_REQ, null, modifier.getRequestBody() );
+        KdcRequest message = new KdcRequest( KerberosConstants.KERBEROS_V5, KerberosMessageType.AS_REQ, null, modifier.getRequestBody() );
 
         handler.messageReceived( session, message );
 
@@ -260,7 +261,7 @@
         KerberosTime requestedRenewTillTime = new KerberosTime( now + KerberosTime.WEEK / 2 );
         modifier.setRtime( requestedRenewTillTime );
 
-        KdcRequest message = new KdcRequest( 5, MessageType.KRB_AS_REQ, null, modifier.getRequestBody() );
+        KdcRequest message = new KdcRequest( KerberosConstants.KERBEROS_V5, KerberosMessageType.AS_REQ, null, modifier.getRequestBody() );
 
         handler.messageReceived( session, message );
 
@@ -297,7 +298,7 @@
         KerberosTime requestedRenewTillTime = new KerberosTime( now + KerberosTime.WEEK / 2 );
         modifier.setRtime( requestedRenewTillTime );
 
-        KdcRequest message = new KdcRequest( 5, MessageType.KRB_AS_REQ, null, modifier.getRequestBody() );
+        KdcRequest message = new KdcRequest( KerberosConstants.KERBEROS_V5, KerberosMessageType.AS_REQ, null, modifier.getRequestBody() );
 
         handler.messageReceived( session, message );