possible new project: better realm determination heuristics -- any takers?

Ken Raeburn raeburn at MIT.EDU
Tue Apr 8 11:59:25 EDT 2008

On Apr 8, 2008, at 09:26, Simo Sorce wrote:
> On Tue, 2008-04-08 at 08:14 +0200, Mark Phalan wrote:
>> On 7 Apr 2008, at 20:54, Ken Raeburn wrote:
>>> [...]
>> I basically implemented this heuristic for our (Sun's) code.
>> If you're interested I can make a patch for MIT 1.6.3 ?

Yes, that would be handy, thanks Mark!

Though as I said, there's more that could be done.  Anyone want to  
build on this work?

>> The algorithm is:
>>    domain = fqdn;
>>    while (domain.label_count > 2) {
>> 	domain = pop_label(domain);
>> 	realm = domain2realm(domain); /* for ASCII: toupper() */
>> 	if (lookup_kdcs(realm) > 0)
>> 	    break;
>> 	realm = NULL;
>>    }

That's probably good for most cases, but will probably be wrong for  
example.co.uk, and doesn't try to deal with mit.edu and the like.   
Still, most of the hostnames we'll get will not exactly match the  
domain associated with the realm by far, so maybe it wouldn't be worth  
the extra DNS traffic potentially generated.  (Then again, my own  
personal domain includes a hostname that matches the two-component  
domain name. :-)

[ Simo Sorce: ]
> It would be useful if discovery would be implemented as a pluggable
> interface, so that custom resolvers can be implemented. This will let
> people customize the resolvers based on their environment and  
> resources.

If someone wants to tackle that, sure!  Thanks for the idea.

I'm not sure it makes sense to integrate it with service location,  
versus being a separate plugin interface.  Integrated, you'd feed in  
"server.example.com" and get back, what, a list of KDC addresses?   
Also, unless we can guarantee that referrals from the KDC will give us  
all the information and we won't want to support local configuration,  
we still need to come up with the realm name in places.

That also reminds me, there are places in our code where we support  
the mapping of a hostname to multiple realms. We should probably  
figure out what that means, if anything, and whether we should  
continue to support it (including letting the plugin return multiple  
names, even if 98% of actual plugins only return one), or phase it out  
everywhere.  (If a hostname maps to two realms, should all services be  
expected to be available via either realm?  Or does the client  
potentially have to try both realms to find the service?)


More information about the krbdev mailing list