KLL as a cross-platform API

Nicolas Williams Nicolas.Williams at sun.com
Tue Apr 20 14:15:10 EDT 2004


After a quick glance I have the following comments:

 - All these functions need a KLL context argument.

 - On some platforms one may want to have some control over prompting
   (on a tty, on a given screen of a given X11 display, etc...).

 - I'd like a better abstraction than "outCredCacheName."

   This is really important.  How do I turn a outCredCacheName into a
   GSS credential?

   If we can make the assumption that GSS credential stores for the
   Kebreros V mechanism and krb5 ccaches are matched/interchangeable,
   then why not just output a gss_cred_id_t instead of a string and use
   GSS_Store_cred() to copy the given credential to a "current" krb5
   ccache?  This leaves the matter of how to manipulate a process'
   current cred store as the only non-generic matter (but I've made a
   proposal about that too).

   This is crossing over into CAT WG/KITTEN BoF matters.  Before you
   comment on this you may want to read the posts on the CAT WG mailing
   list archive for the last few weeks.

 - Similarly with keytabs.  I'd rather use gss_cred_id_t's instead of
   keytab names.

 - The last two comments amount to this: I'd rather see this API be a
   mechanism-specific extension to the GSS-API than a platform-specific
   interface with no tie to the GSS-API.

 - KLL seems like it could be extended so as to replace all of the krb5
   API...

Nico
-- 

On Tue, Apr 06, 2004 at 03:48:17PM -0400, Sam Hartman wrote:
> 
> 
> KFM has had an API called the Kerberos Login Library for a while.  It
> makes it easy to get credentials and to manipulate these credentials.
> It's even documented; take a look at
> http://web.mit.edu/macdev/KfM/KerberosFramework/KerberosLogin/Documentation/API.html.
> 
> 
> Alexis is working on revisions to this API for the next version of
> KFM.  The primary purpose of the revisions is to make KLL thread safe.
> 
> 
> Jeffrey Altman wants a future version of KFW to support KLL.  I think
> everyone on the team realizes that krb5_get_init_creds is not the
> paragon of user-friendly APIs.  I think it is better than
> krb5_get_in_tkt, but an even higher level API would be nice for users.
> 
> 
> If KLL is going to remain a KFM-specific API then I don't think this
> list needs to consider it much.  It is already meeting the needs of
> the KFM user community.
> 
> However if we are going to have similar APIs for all our platforms to
> do this sort of initial credentials management then it should be
> consistent across platforms.
> 
> Here are my thoughts on KLL as a cross-platform API.  It's not clear
> that we have time or desire to implement these comments.  They are
> being submitted to start discussion.  One thing that would be
> particularly useful to us would be feedback from vendors like Sun,
> Redhat and KFW about the suitability of KLL as a cross-platform API.
> 
> 			       Comments
> 
> I suspect the most controversial decision in KLL is its identifier
> name style.  IT uses studlycaps rather than lower case with
> underscores.  That's desirable for KFM because it is more consistent
> with Mac APIs.  However the krb5 and krb4 APIs tend to use
> underscores.  How confused will programmers be by having two different
> styles of API in the same product?  Would consistency between KLL and
> say GSSAPI affect vendors' decisions on whether to support the API?
> 
> Similarly, because of the Mac's Pascal roots, functions to get rid of
> resources are called Dispose not Free or Destroy.  I don't think this
> is a particularly big deal; does anyone?
> 
> 
> 
> KLL uses enumerated types for constants.  It does so in a manner
> fairly consistent with the direction we are moving for krb5.
> Anonymous enumerations are used for constants, but enumeration types
> are not part of the ABI.  One thing it does do that the krb5 code does
> not currently do is use character constants for option names.  Here's
> an example:
> 
> enum {
> /* Initial values and ranges */
> loginOption_LoginName                  = 'name',
> loginOption_LoginInstance              = 'inst',
> 
> loginOption_ShowOptions                = 'sopt',
> 
> 
> IN particular, this requires that the enumeration type be at least as
> wide as 4 chars.  Do we think this will ever be a problem?
> 
> Currently, KLL only supports API: ccache types.  Alexis said she will
> add support for file credential caches in her current work.
> Presumably on Windows we'd need support for MSLSA caches at least for
> some functions.
> 
> KLL seems to have dialogue and event loop support at least for OS9.  I
> doubt this will ever be portable across platforms; we probably have to
> accept that each platform needs its own event loop code.  
> 
> _______________________________________________
> krbdev mailing list             krbdev at mit.edu
> https://mailman.mit.edu/mailman/listinfo/krbdev


More information about the krbdev mailing list