MIT Kerberos LDAP backend

Simon Wilkinson simon at sxw.org.uk
Fri Nov 9 12:03:54 EST 2007


[ Replying to both of your emails at once ]

> Do you know of any other method whereby we would be able to  
> effectively
> let Kerberos delegate the authentication step to LDAP, and then  
> carry on
> as if that part had been done itself?

I think you're misunderstanding the way that Kerberos works. Kerberos  
is an authentication system, and a cryptographically based one at  
that. It requires having access to the users password in order to  
perform the encryption operations that it's security is based on. You  
can't defer these operations to another source to say "is this  
password correct". I suppose it would be technically feasible to have  
Kerberos use an external password store (it would require access to  
the plaintext of all of these passwords), and generate its keys on  
the fly, but as far as I'm aware no-one has done this work.

> Or is the only solution to duplicate all user data into Kerberos, and
> then frequently sync the two?

Kerberos doesn't hold user data in the same way that something like  
LDAP does. All Kerberos holds is the user's principal (usually  
derived from their username), a set of keys (derived from the  
password), and a set of flags controlling the way in which that  
principal may be used. The Kerberos database tends to get populated  
either with an account provisioning system, or creating entries based  
on an LDAP data store. Normally Kerberos would be the authoritative  
password source, with LDAP deferring authentication operations to  
Kerberos - however it is entirely possible that you could maintain  
passwords both in Kerberos and LDAP, and keep this in sync, either by  
running code on both your KDC and LDAP servers to intercept password  
change, or by forcing all password changes to go through a central form.

>
> So what we would have liked is for a web-based user to go to one of  
> our
> web applications that requires authentication and for them to
> authenticate in a way that ends up with them having a valid Kerberos
> ticket somehow for other Kerberos aware applications, so they don't  
> get
> asked for user/pass again in a session.

Kerberos and the web don't currently play that well together. Most  
organisation's web-SSO solutions that I'm aware of use technologies  
such as Cosign (from the University of Michigan) or WebAuth  
(Stanford) to translate the Kerberos authentication that's happening  
behind the scenes into cookie based authentication that works with  
all of today's web browsers. It's worth noting that there's no easy  
way for an authentication operation against a remote web site to  
result in Kerberos credentials being created on the local machine.

However, if you're purely interested in Web based applications, you  
_may_ be able to deploy a web SSO technology without needing to have  
it backed with Kerberos. Cosign, in particular, can support pretty  
much any password database in order to authenticate users. The  
complication arises, however, if your web applications have to  
perform operations on behalf of the user. In the situation where the  
user gives their password to every web site, then that web site can  
easily use that password to gain access to other services on behalf  
of the user (whether the user want's them to or not). This is  
typically used for applications such as webmail, where the web mail  
site uses the user's password to access an IMAP server as the user.  
If you're using web-SSO, then the application never sees the user's  
password, and so can't do this. When you're working with Kerberos,  
the web-SSO system gets round this by giving the application the  
user's Kerberos credentials, allowing other Kerberos enabled services  
to be accessed as the user. This is accomplished without the site  
getting to know the user's long term password, which is a significant  
security gain. If you don't have Kerberos, then you won't be able to  
do this - you'd need to either modify all of your backend services to  
accept cosign proxy authentication, or allow your web sites to simply  
assert identities. It all depends on what you're trying to do.

We've been through this dance at the University of Edinburgh both in  
Informatics (where I work) and centrally. I'd be happy to talk to you  
further if you'd like more information.

Cheers,

Simon.




More information about the Kerberos mailing list