Return-Path: Delivered-To: apmail-directory-commits-archive@www.apache.org Received: (qmail 44304 invoked from network); 26 Aug 2005 16:44:48 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 26 Aug 2005 16:44:48 -0000 Received: (qmail 68758 invoked by uid 500); 26 Aug 2005 16:44:48 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 68720 invoked by uid 500); 26 Aug 2005 16:44:48 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 68706 invoked by uid 99); 26 Aug 2005 16:44:47 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 26 Aug 2005 09:44:47 -0700 X-ASF-Spam-Status: No, hits=-9.8 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Fri, 26 Aug 2005 09:45:05 -0700 Received: (qmail 44287 invoked by uid 65534); 26 Aug 2005 16:44:46 -0000 Message-ID: <20050826164446.44286.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r240283 - /directory/protocol-providers/kerberos/branches/refactor-to-chain/src/java/org/apache/kerberos/protocol/KerberosProtocolHandler.java Date: Fri, 26 Aug 2005 16:44:46 -0000 To: commits@directory.apache.org From: erodriguez@apache.org X-Mailer: svnmailer-1.0.3 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: erodriguez Date: Fri Aug 26 09:44:44 2005 New Revision: 240283 URL: http://svn.apache.org/viewcvs?rev=240283&view=rev Log: Handler rewrite to call AS and TGS chains. Modified: directory/protocol-providers/kerberos/branches/refactor-to-chain/src/java/org/apache/kerberos/protocol/KerberosProtocolHandler.java Modified: directory/protocol-providers/kerberos/branches/refactor-to-chain/src/java/org/apache/kerberos/protocol/KerberosProtocolHandler.java URL: http://svn.apache.org/viewcvs/directory/protocol-providers/kerberos/branches/refactor-to-chain/src/java/org/apache/kerberos/protocol/KerberosProtocolHandler.java?rev=240283&r1=240282&r2=240283&view=diff ============================================================================== --- directory/protocol-providers/kerberos/branches/refactor-to-chain/src/java/org/apache/kerberos/protocol/KerberosProtocolHandler.java (original) +++ directory/protocol-providers/kerberos/branches/refactor-to-chain/src/java/org/apache/kerberos/protocol/KerberosProtocolHandler.java Fri Aug 26 09:44:44 2005 @@ -16,16 +16,15 @@ */ package org.apache.kerberos.protocol; -import java.io.IOException; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.kerberos.chain.Command; import org.apache.kerberos.exceptions.ErrorType; -import org.apache.kerberos.exceptions.KerberosException; -import org.apache.kerberos.messages.AuthenticationReply; -import org.apache.kerberos.messages.ErrorMessage; +import org.apache.kerberos.kdc.authentication.AuthenticationContext; +import org.apache.kerberos.kdc.authentication.AuthenticationServiceChain; +import org.apache.kerberos.kdc.ticketgrant.TicketGrantingContext; +import org.apache.kerberos.kdc.ticketgrant.TicketGrantingServiceChain; import org.apache.kerberos.messages.KdcRequest; -import org.apache.kerberos.messages.TicketGrantReply; import org.apache.kerberos.service.KdcConfiguration; import org.apache.kerberos.store.PrincipalStore; import org.apache.mina.common.IdleStatus; @@ -42,15 +41,20 @@ public class KerberosProtocolHandler implements ProtocolHandler { private static final Log log = LogFactory.getLog( KerberosProtocolHandler.class ); - private AuthenticationService authService; - private TicketGrantingService tgsService; - private ErrorService errorService; + + private KdcConfiguration config; + private PrincipalStore store; + + private Command authService; + private Command tgsService; public KerberosProtocolHandler( KdcConfiguration config, PrincipalStore store ) { - errorService = new ErrorService( config ); - authService = new AuthenticationService( config, store ); - tgsService = new TicketGrantingService( config, store ); + this.config = config; + this.store = store; + + authService = new AuthenticationServiceChain(); + tgsService = new TicketGrantingServiceChain(); } public void sessionCreated( ProtocolSession session ) @@ -98,41 +102,47 @@ log.debug( session.getRemoteAddress() + " RCVD: " + message ); } - try - { - KdcRequest request = (KdcRequest) message; + KdcRequest request = (KdcRequest) message; - int messageType = request.getMessageType().getOrdinal(); + int messageType = request.getMessageType().getOrdinal(); + try + { switch ( messageType ) { case 10: - AuthenticationReply authReply = authService.getReplyFor( request ); - session.write( authReply ); + AuthenticationContext authContext = new AuthenticationContext(); + authContext.setConfig( config ); + authContext.setStore( store ); + authContext.setRequest( request ); + + authService.execute( authContext ); + + session.write( authContext.getReply() ); break; case 12: - TicketGrantReply ticketReply = tgsService.getReplyFor( request ); - session.write( ticketReply ); + TicketGrantingContext tgsContext = new TicketGrantingContext(); + tgsContext.setConfig( config ); + tgsContext.setStore( store ); + tgsContext.setRequest( request ); + + tgsService.execute( tgsContext ); + + session.write( tgsContext.getReply() ); break; case 11: case 13: - throw new KerberosException( ErrorType.KRB_AP_ERR_BADDIRECTION ); + log.error( "Kerberos error: " + ErrorType.KRB_AP_ERR_BADDIRECTION.getMessage() ); default: - throw new KerberosException( ErrorType.KRB_AP_ERR_MSG_TYPE ); + log.error( "Kerberos error: " + ErrorType.KRB_AP_ERR_MSG_TYPE.getMessage() ); } } - catch ( KerberosException ke ) - { - log.error( "Returning error message: " + ke.getMessage(), ke ); - ErrorMessage errorMessage = errorService.getReplyFor( ke ); - session.write( errorMessage ); - } - catch ( IOException ioe ) + catch ( Exception e ) { - log.error( ioe ); + log.error( e.getStackTrace() ); } }