TGS request interfaces
ghudson@MIT.EDU
ghudson at MIT.EDU
Thu Apr 8 16:49:27 EDT 2010
Right now we have the following nested interfaces for the TGS path:
krb5_get_credentials
- The only public TGS API currently (except for validate/renew)
- Performs the initial cache check for the target creds
- Has its own flags number space (KRB5_GC_*)
- Caches the resulting creds and intermediate TGTs
- Has a flag to fetch only cached credentials
- Has a flag to disable caching of the resulting cred (but not to
disable caching of intermediate TGTs)
krb5_get_creds_from_kdc (gc_frm_kdc.c)
- Handles cross-realm TGT acquisition and referrals
- Accepts flags in the KDC options namespace (KDC_OPT_*)
krb5_get_cred_via_tkt (gc_via_tkt.c)
- Handles decoding/validating a TGS reply and extracting new creds
- Adds a few consistency checks around krb5int_make_tgs_request_ext
krb5int_make_tgs_request_ext (send_tgs.c)
- Purely about constructing TGS requests
We're about to add a new, asynchronous, public interface to this mix,
analagous to krb5_init_creds_{init,step}. Luke's work initially made
this interface analagous to krb5_get_creds_from_kdc(), but I'm
wondering if it should be pushed up to the krb5_get_credentials()
level. Relative to the code I currently have on the branch, that
would mean:
* krb5_tkt_creds_init() would take KRB5_GC_* flags instead of
KDC_OPT_* flags.
* On the first call, krb5_tkt_creds_step() would perform the initial
cache check for the target creds (meaning it would sometimes
return from the first call with no request to make).
* On receiving the final reply, krb5_tkt_creds_step() would cache
the resulting target creds unless initialized with
KRB5_GC_NO_STORE.
Currently the code replaces gc_frm_kdc.c; with this change it would
probably live in get_credentials.c and gc_frm_kdc.c would go away.
Opinions?
More information about the krbdev
mailing list