Client Principal Selection
Nicolas Williams
Nicolas.Williams at sun.com
Mon Jul 11 16:31:43 EDT 2005
On Mon, Jul 11, 2005 at 03:41:19PM -0400, Alexandra Ellwood wrote:
> On Jul 11, 2005, at 2:31 PM, Nicolas Williams wrote:
> >On Fri, Jul 08, 2005 at 04:29:27PM -0400, Alexandra Ellwood wrote:
> >[...]
> >
> >>2) Client principals for multiple realms with no cross-realm
> >>authentication
> >
> >>3) Multiple client principals with different privileges (ie:
> >>user at EXAMPLE.COM and user/admin at EXAMPLE.COM)
> >>
> >I see these two as very similar problems. Both can be addressed with
> >notions of environment variables, trust partitions, AFS-like PAGs or
> >variants thereof -- each application instance then has access to only
> >one set of TGTs for only one client principal. I think that could be
> >seen as very user-friendly in some cases, as not at all user-
> >friendly in
> >others.
>
> They're similar problems given the current KRB5CCNAME/system default
> principal model of client principal selection. However, once we
> start caching or searching they become different problems because in
> #2 it's very likely that only one of the client principals can
> actually authenticate to the service -- or that one authentication
> path is obviously preferable to the other. In #3 both the user at REALM
> and user/admin at REALM principals can successfully authenticate.
>
> Note that the KRB5CCNAME/system default principal model is
> insufficient for applications like Mail.app or Eudora which support
> getting email for multiple accounts. Fortunately right now we
> haven't gotten users with two Kerberos-using email accounts, but if
> we're successful in increasing Kerberos deployment we'll eventually
> have some.
Right -- they're similar only assuming a solution that binds each
application instance to a single client principal and its credentials.
They are dissimilar otherwise.
>
> >In any case, use of any OS facility more advanced than environment
> >variables runs into portability problems.
>
> Once the CCAPI gets ported to Unix we should have a lot more
> flexibility in what we can do. The CCAPI only requires the OS
> provide a local RPC and has been written to support two platforms
> with wildly different local RPC models (Mac OS X and Windows). The
> rest of the CCAPI functionality is provided through the RPC layer
> including the ability to have multiple ccaches and iterate over them.
I was referring to the need or desire to track groups of processes --
initial group members and progeny. It isn't necessarily easy to do that
portably without making use of environment variables.
> >>7) Referrals
> >>
> >>
> >[...]
> >
> >>Instead of using DNS, Kerberos referrals use the KDC. Referrals
> >>allow the client to contact a KDC in the client principal's realm to
> >>find out the service principal corresponding to a given service and
> >>server name pair.
> >>
> >
> >But this implies cross-realm configuration, if not even cross-realm
> >keys.
> >
>
> Sure, but you can't detect the presence of cross-realm without
> trying. Which means if we search for the tickets, we will end up
> trying to get referrals from the realm of each of the client
> principals in the cache collection.
Sure, that's a lot of online work -- though it can be parallelized. And
the results may not be deterministic (what if more than one client
principal can get a service ticket for the target? how should one or
another be selected?).
> This also brings up a point Sam made but I forgot to add to my
> initial email. If a user uses a Kerberized service they don't want
> people to know they use, our searching algorithm may end up asking
> other realms for a referral for it. This exposes information about
> the user that they might not want exposed. For example we might end
> up asking the KDC for COMPANY.COM for a referral for the HTTP service
> for www.porn.com.
Yes, clearly this approach has privacy issues.
> >Perhaps we need a requirement for the referrals work that it allow for
> >referrals where no cross-realm keys have been exchanged.
>
> I think that's probably outside the scope of this discussion.
I didn't suggest discussing technical details of referrals, but whether
there might be a need for a feature that could be brought to the KRB
WG's attention. I don't see why that wouldn't be in scope here, except
unless you reject the use of referrals immediately due to the issues
above.
> >
> >>What this means for client principal selection is that figuring out
> >>if a given client principal is correct for a given server/service
> >>pair requires an extra communication with the client principal's KDC
> >>to get the service principal via a referral.
> >>
> >
> >Which the client was going to do anyways. I don't mind the
> >infrastructure -- everyone seems to want some online infrastructure
> >nowadays.
> >
>
> Some of our customers seem to have performance requirements due to
> using Kerberos over high-latency networks, networks with no DNS and
> networks where large numbers of ports are blocked (causing timeouts).
Sure, which leads you down the distributed configuration/hints path.
> >
> >>* Searching:
> >>
> >>Caching doesn't prevent the user from being prompted the first time,
> >>and the more wide-spread Kerberos adoption gets, the longer the
> >>client principal selection list will be. If the user's first
> >>experience with Kerberos is a series of long thought-provoking
> >>questions from each Kerberized application, we're not going to be
> >>winning any popularity contests -- especially with the site support
> >>staff. :-)
> >>
> >>In particular, if the correct client principal is obvious (eg:
> >>connecting to a server at secure-email.com requires tickets at
> >>SECURE-
> >>EMAIL.COM), the user will wonder why the system didn't just select
> >>the correct ticket automatically. If the correct client principal
> >>isn't obvious (eg: cross-realm is involved), then novice users won't
> >>
> > ^
> > not?
> >
>
> If the site is using cross realm, then a service at server.a.com may
> actually use the client principal user at B.COM. I'm not sure how a
> novice user would know that realm A.COM and realm B.COM share keys
> and thus that user at B.COM is the correct client principal to choose.
> If there's no cross realm (and you aren't some ancient thing like
> MIT), then your realm is probably the uppercase of the server's domain.
Ah, I get it.
[...]
> >But since many users could not be expected to provide these this
> >approach implies more distributed configuration/online infrastructure.
> >
>
> Yes, I'm talking about the site providing this. I'd also be
> interested in people's thoughts on whether these need to be delivered
> in a secure manner (ie: integrity protected? privacy protected?).
Yes, such configuration should be delivered securely. As securely as
DNS (i.e., if you want it secure deploy DNSSEC) is probably OK.
Nico
--
More information about the krbdev
mailing list