All,

I've setup a development environment for working with the kerberos
client library and am running into a problem generating a service
ticket.  The below code "works" in that I get a TGT and it fails if I
put in the wrong password but I don't seem to get the correct tickets
and when I try to generate a service ticket I get an exception.  Below
is my code and the exception.  I've also attached packet captures from
both a successful kinit and the failed kerberos client login.

Code:

Properties props = new Properties();
                props.setProperty("log4j.rootLogger", "DEBUG,A1");
                props.setProperty("log4j.appender.A1", 
"org.apache.log4j.ConsoleAppender");
                
props.setProperty("log4j.appender.A1.layout","org.apache.log4j.PatternLayout");
                
props.setProperty("log4j.appender.A1.layout.ConversionPattern","%-4r
[%t] %-5p %c %x - %m%n");
                
                PropertyConfigurator.configure(props);
                System.out.println("creating principal");
                KerberosPrincipal clientPrincipal = new KerberosPrincipal(
"[email protected]");
                System.out.println("creating con");
                KdcConnection con = new 
KdcConnection("adfs-dc.w2k3r2.test.com");
                System.out.println("creating tgt");
                KerberosTicket tgt = con.getTicketGrantingTicket( 
clientPrincipal,
new String("$tart123") );
                System.out.println("generating service ticket");
                KerberosPrincipal sp = new
KerberosPrincipal("http/[email protected]");
                KerberosTicket sgt = con.getServiceTicket(tgt, sp);
                System.out.println("service ticket granted");
                tgt.destroy();
                con.disconnect();

Output:

reating principal
creating con
creating tgt
0    [NioProcessor-1] DEBUG
org.apache.directory.client.kerberos.protocol.KerberosClientHandler  -
adfs-dc.w2k3r2.test.com/192.168.174.133:88 CREATED:  datagram
418  [NioProcessor-1] DEBUG
org.apache.mina.filter.codec.ProtocolCodecFilter  - Processing a
MESSAGE_RECEIVED for session 1
431  [NioProcessor-1] DEBUG
org.apache.directory.client.kerberos.protocol.KerberosClientHandler  -
adfs-dc.w2k3r2.test.com/192.168.174.133:88 RCVD:
org.apache.directory.server.kerberos.shared.messages.kdcre...@1960f05
445  [main] DEBUG
org.apache.directory.client.kerberos.GetTicketGrantingTicket  -
Received ticket for '[email protected]' to access
'krbtgt/[email protected]'.
generating service ticket
457  [NioProcessor-3] DEBUG
org.apache.directory.client.kerberos.protocol.KerberosClientHandler  -
adfs-dc.w2k3r2.test.com/192.168.174.133:88 CREATED:  datagram
467  [main] ERROR
org.apache.directory.client.kerberos.protocol.KerberosClientHandler  -
adfs-dc.w2k3r2.test.com/192.168.174.133:88 EXCEPTION
org.apache.mina.filter.codec.ProtocolEncoderException:
java.nio.BufferOverflowException
        at 
org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:313)
        at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:505)
        at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1400(DefaultIoFilterChain.java:47)
        at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:813)
        at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.filterWrite(DefaultIoFilterChain.java:739)
        at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:505)
        at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireFilterWrite(DefaultIoFilterChain.java:497)
        at 
org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:427)
        at 
org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:368)
        at 
org.apache.directory.client.kerberos.GetServiceTicket.execute(GetServiceTicket.java:144)
        at 
org.apache.directory.client.kerberos.KdcConnection.getServiceTicket(KdcConnection.java:150)
        at 
org.apache.directory.client.kerberos.KdcConnection.getServiceTicket(KdcConnection.java:133)
        at TestKerb.main(TestKerb.java:27)
Caused by: java.nio.BufferOverflowException
        at java.nio.Buffer.nextPutIndex(Buffer.java:495)
        at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:145)
        at 
org.apache.directory.shared.asn1.der.ASN1OutputStream$1.write(ASN1OutputStream.java:52)
        at java.io.FilterOutputStream.write(FilterOutputStream.java:60)
        at java.io.FilterOutputStream.write(FilterOutputStream.java:108)
        at java.io.FilterOutputStream.write(FilterOutputStream.java:80)
        at 
org.apache.directory.shared.asn1.der.ASN1OutputStream.writeEncoded(ASN1OutputStream.java:94)
        at 
org.apache.directory.shared.asn1.der.DERApplicationSpecific.encode(DERApplicationSpecific.java:86)
        at 
org.apache.directory.shared.asn1.der.ASN1OutputStream.writeObject(ASN1OutputStream.java:106)
        at 
org.apache.directory.server.kerberos.shared.io.encoder.KdcRequestEncoder.encode(KdcRequestEncoder.java:61)
        at 
org.apache.directory.client.kerberos.protocol.KerberosClientUdpEncoder.encode(KerberosClientUdpEncoder.java:46)
        at 
org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:298)
        ... 12 more
469  [main] ERROR
org.apache.directory.client.kerberos.GetServiceTicket  - KDC returned
error; ticket will be null.
service ticket granted

Thanks

Marc

Attachment: apacheds-kerb-client
Description: Binary data

Attachment: kinit
Description: Binary data

Attachment: krb5.conf
Description: Binary data

Reply via email to