Using the MSLSA krb5_ccache type with a non-Microsoft KDC

Douglas E. Engert deengert at anl.gov
Fri Dec 19 14:53:54 EST 2003



Jeffrey Altman wrote:
> 
> The initial purpose of implementing the MSLSA krb5_ccache type was to
> attempt to pursuade the authors of various tools which have been copying
> the original ms2mit.c source code to stop doing so.  That code while it
> worked well on Windows 2000 when run immediately after logon would have
> a tendency to return expired tickets or fail in environments which did
> not support DES-CBC-CRC.  By implementing the ability to read the contents
> of the MSLSA cache via the krb5_ccache api it is possible to re-implement
> the ms2mit.c functionality in six lines of code while allowing the krb5
> library to hide the various weird details.
> 
> The work which was committed last night allows the MSLSA ccache to be
> leveraged to provide transparent support for obtaining credentials
> using the principal associated with the Logon Session.
> 
> If you have thoughts on how AcquireCredentialsHandle() could be used
> to instantiate a new LSA cache please let me know.  The krb5_ccache
> api has no knowledge of usernames or passwords or hardware tokens.  All
> it knows about are ccache types, ccache names, and the ability to
> request/read a credential or store a credential.
> 
> Besides, if you are using the MIT krb5 api, I do not see the benefit
> for using the LSA for non-Logon Session principals.  Under what
> circumstances
> would it benefit you to do so?

A personal workstation at home, to access AFS, or use kx509 for example.
The machine does not have to have a principal. 

The gssklog for example today, will use either the gssapi32.dll or 
the SSPI. It uses LoadLibrary("gssapi32.dll"); So it can be run on a 
system with or without the Kerberos package present.  It can get the 
credentials via the gss_acquire_cred from Kerberos, or via the SSPI 
AcquireCredentialsHandle or if needed use the SSPI 
AcquireCredentialsHandle with the AuthIdentity. 

So for AFS purposes, it can look like the old klog, with a
user and password, or it can look like aklog where it uses the
available credentials either via Kerberos or Windows. 

What I am suggesting is that it might be possible to have kinit
(or leash) pass in a userid and password to the AcquireCredentialsHandle
via the AuthIdentity and get the first TGT. But I have not checked
if when the AuthIdentity is used, are the credentials available
to other applications. 


> Jeffrey Altman
> 
> Douglas E. Engert wrote:
> 
> >Thanks for the nice write up.
> >
> >Yes I do that all the time, and can use either an AD realm, or an
> >MIT based realm.
> >
> >May comments, questions may have been addressing to situation where
> >the SSPI/LSA will let you provide a userid and password
> >on the AuthIdentity parameter to the AcquireCredentialsHandle
> >but this gives you a local set of credentials I don't think you can
> >use these outside the application. If you can, this could
> >be used for kinit too. I think this is what the runas command is using.
> >
> >So my original comments/questions maybe outside the scope of what
> >you where supporting in the modification.
> >
> >I was using the feature with gssklog, msklog, and kx509 if the
> >user was on a machine not in a domain, and needed credentials
> >after logging in locally.
> >
> >
> >

-- 

 Douglas E. Engert  <DEEngert at anl.gov>
 Argonne National Laboratory
 9700 South Cass Avenue
 Argonne, Illinois  60439 
 (630) 252-5444


More information about the krbdev mailing list