gssapi and an expired TGT in cache
    Sorin Manolache 
    sorinm at gmail.com
       
    Wed Mar  4 15:44:05 EST 2015
    
    
  
On 2015-03-04 17:21, Greg Hudson wrote:
> On 03/04/2015 10:42 AM, Sorin Manolache wrote:
>> Unfortunately it seems that krb5_cc_remove_cred is not implemented for
>> the memory cache type either.
>
> Yes, but if you use a memory ccache, you won't be sharing with other
> processes, so there will never be pre-existing creds there.
>
That is true. However my application is a http server module with an 
indefinite running time (similar to 
http://css.csail.mit.edu/6.858/2014/projects/kanter-bcyphers-bfaviero-jpeebles.pdf) 
so the credentials will eventually expire.
As the server is multi-threaded the krb5_cc_destroy alternative doesn't 
work either: all gss_acquire_cred/krb5 calls should be then protected by 
a mutex in order to avoid a race condition with krb5_cc_destroy. As my 
module does almost exclusively gssapi/krb5 calls the whole application 
becomes almost mono-threaded.
So I see the following alternatives:
1) patch gss_acquire_cred_with_password such that it detects that the 
TGT stored in the cache is expired, makes a KDC request, and replaces 
the expired TGT in the cache with the newly created TGT.
2) implement krb5_mcc_remove_cred. Is there any particular reason why it 
was left unimplemented?
3) switch to the heimdal implementation. However heimdal uses the cache 
only if the desired name passed to gss_acquire_cred is the default 
principal of the cache so it's not really what I want either.
I would try the 2nd. If I succeed I'll submit the patch. If I fail, I'll 
go with the 3rd one.
Best regards,
Sorin
    
    
More information about the krbdev
mailing list