Author: erodriguez
Date: Mon Nov  1 23:01:53 2004
New Revision: 56360

Modified:
   
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/kdc/TicketGrantingService.java
Log:
Minor refactoring, hoping for better code reuse in AP scenarios.

Modified: 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/kdc/TicketGrantingService.java
==============================================================================
--- 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/kdc/TicketGrantingService.java
   (original)
+++ 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/kdc/TicketGrantingService.java
   Mon Nov  1 23:01:53 2004
@@ -59,9 +59,9 @@
                
                Ticket tgt = authHeader.getTicket();
                
-               Authenticator authenticator = verifyApReq(authHeader, tgt);
+               Authenticator authenticator = verifyAuthHeader(authHeader, tgt);
                
-               verifyTicket(authHeader, request);
+               verifyTicket(tgt, request.getServerPrincipal());
                
                verifyBodyChecksum(authenticator.getChecksum(), request);
                
@@ -96,7 +96,7 @@
        }
        
        // RFC 1510 A.10.  KRB_AP_REQ verification
-       private Authenticator verifyApReq(ApplicationRequest authHeader, Ticket 
tgt)
+       private Authenticator verifyAuthHeader(ApplicationRequest authHeader, 
Ticket ticket)
                        throws KerberosException, IOException {
                
                if (authHeader.getProtocolVersionNumber() != 5)
@@ -111,7 +111,7 @@
                if (authHeader.getOption(ApOptions.USE_SESSION_KEY)) {
                        serverKey = authHeader.getTicket().getSessionKey();
                } else {
-                       KerberosPrincipal serverPrincipal = 
tgt.getServerPrincipal();
+                       KerberosPrincipal serverPrincipal = 
ticket.getServerPrincipal();
                        PrincipalStoreEntry serverEntry = 
_bootstrap.getEntry(serverPrincipal);
                        if (serverEntry != null) {
                                serverKey = serverEntry.getEncryptionKey();
@@ -128,11 +128,11 @@
                }
                
                try {
-                       byte[] decTicketPart = 
_cryptoService.decrypt(serverKey, tgt.getEncPart());
+                       byte[] decTicketPart = 
_cryptoService.decrypt(serverKey, ticket.getEncPart());
 
                        EncTicketPartDecoder ticketPartDecoder = new 
EncTicketPartDecoder();
                        EncTicketPart encPart = 
ticketPartDecoder.decode(decTicketPart);
-                       tgt.setEncTicketPart(encPart);
+                       ticket.setEncTicketPart(encPart);
                } catch (KerberosException ke) {
                        throw KerberosException.KRB_AP_ERR_BAD_INTEGRITY;
                }
@@ -140,19 +140,19 @@
                Authenticator authenticator;
                
                try {
-                       byte[] decAuthenticator = 
_cryptoService.decrypt(tgt.getSessionKey(), authHeader.getEncPart());
+                       byte[] decAuthenticator = 
_cryptoService.decrypt(ticket.getSessionKey(), authHeader.getEncPart());
                        AuthenticatorDecoder authDecoder = new 
AuthenticatorDecoder();
                        authenticator = authDecoder.decode(decAuthenticator);
                } catch (KerberosException ke) {
                        throw KerberosException.KRB_AP_ERR_BAD_INTEGRITY;
                }
                
-               if 
(!authenticator.getClientPrincipal().getName().equals(tgt.getClientPrincipal().getName()))
 {
+               if 
(!authenticator.getClientPrincipal().getName().equals(ticket.getClientPrincipal().getName()))
 {
                        throw KerberosException.KRB_AP_ERR_BADMATCH;
                }
                
                // TODO - need to get at IP Address for sender
-               if (tgt.getClientAddresses() != null) {
+               if (ticket.getClientAddresses() != null) {
                        // if (sender_address(packet) is not in 
decr_ticket.caddr)
             //    then error_out(KRB_AP_ERR_BADADDR);
                }
@@ -170,13 +170,13 @@
                if 
(!authenticator.getClientTime().isInClockSkew(_config.getClockSkew()))
                        throw KerberosException.KRB_AP_ERR_SKEW;
                
-               if (tgt.getStartTime() != null && 
!tgt.getStartTime().isInClockSkew(_config.getClockSkew()) ||
-                               tgt.getFlag(TicketFlags.INVALID))
+               if (ticket.getStartTime() != null && 
!ticket.getStartTime().isInClockSkew(_config.getClockSkew()) ||
+                               ticket.getFlag(TicketFlags.INVALID))
                                // it hasn't yet become valid
                 throw KerberosException.KRB_AP_ERR_TKT_NYV;
                
                // TODO - doesn't take into account skew
-               if (!tgt.getEndTime().greaterThan(new KerberosTime()))
+               if (!ticket.getEndTime().greaterThan(new KerberosTime()))
             throw KerberosException.KRB_AP_ERR_TKT_EXPIRED;
                
                authHeader.setOption(ApOptions.MUTUAL_REQUIRED);
@@ -184,12 +184,11 @@
                return authenticator;
        }
        
-       private void verifyTicket(ApplicationRequest authHeader, KdcRequest 
request)
+       private void verifyTicket(Ticket ticket, KerberosPrincipal 
serverPrincipal)
                        throws KerberosException {
                
-               Ticket tgt = authHeader.getTicket();
-               if (!tgt.getRealm().equals(_config.getPrimaryRealm()) &&
-                               
!tgt.getServerPrincipal().equals(request.getServerPrincipal()))
+               if (!ticket.getRealm().equals(_config.getPrimaryRealm()) &&
+                               
!ticket.getServerPrincipal().equals(serverPrincipal))
                        throw KerberosException.KRB_AP_ERR_NOT_US;
        }
        
@@ -229,12 +228,11 @@
                        throw KerberosException.KRB_AP_ERR_MODIFIED;
        }
        
-       private EncryptionKey getServerKey(KdcRequest request) throws 
KerberosException {
+       private EncryptionKey getServerKey(KerberosPrincipal serverPrincipal) 
throws KerberosException {
                
                EncryptionKey serverKey = null;
                // TODO - allow lookup with realm
                try {
-                       KerberosPrincipal serverPrincipal = 
request.getServerPrincipal();
                        PrincipalStoreEntry serverEntry = 
_bootstrap.getEntry(serverPrincipal);
                        if (serverEntry != null) {
                                serverKey = serverEntry.getEncryptionKey();
@@ -279,7 +277,7 @@
                
                processTimes(request, newTicketBody, tgt);
                
-               EncryptionKey serverKey = getServerKey(request);
+               EncryptionKey serverKey = 
getServerKey(request.getServerPrincipal());
                
                EncTicketPart ticketPart = newTicketBody.getEncTicketPart();
                

Reply via email to