[krbdev.mit.edu #7698] Service principal aliases broken in 1.11 KDC
Greg Hudson via RT
rt-comment at krbdev.mit.edu
Wed Aug 28 12:03:55 EDT 2013
RFC 6806 section 6 specifies that when a client makes a TGS request for
the alias name of a server, the KDC must issue a ticket which appears to
be for the alias, not for the canonical name. We implement this
correctly up through 1.10, but in 1.11 we issue a ticket for the
canonical name, which clients will typically reject.
In 1.10, there is a complicated piece of open-coded KDC logic for
looking up the service principal. It rewrites request->server if we are
returning an alternate cross-realm TGT or making a host referral. The
rewritten request->server is used as the reply server.
In 1.11, we replaced this logic with a call to a helper function
search_sprinc(), after which we unconditionally rewrite request->server.
This is fine if search_sprinc() elected to return an alternate TGT or a
TGT for a host referral, but is incorrect if request->server was simply
an alias.
A minimal fix is to only rewrite request->server if search_sprinc()
returned a TGT. In the long term, we want to separate the reply server
from the request server so we aren't rewriting the request, but we still
need to apply the same rules for when we make the reply server different
from the request server.
More information about the krb5-bugs
mailing list