3.3.1. Generation of KRB_TGS_REQ message
Connected: An Internet Encyclopedia
3.3.1. Generation of KRB_TGS_REQ message
Up:
Connected: An Internet Encyclopedia
Up:
Requests For Comments
Up:
RFC 1510
Up:
3. Message Exchanges
Up:
3.3. The Ticket-Granting Service (TGS) Exchange
Prev: 3.3. The Ticket-Granting Service (TGS) Exchange
Next: 3.3.2. Receipt of KRB_TGS_REQ message
3.3.1. Generation of KRB_TGS_REQ message
3.3.1. Generation of KRB_TGS_REQ message
Before sending a request to the ticket-granting service, the client
must determine in which realm the application server is registered
[Note: This can be accomplished in several ways. It might be known
beforehand (since the realm is part of the principal identifier), or
it might be stored in a nameserver. Presently, however, this
information is obtained from a configuration file. If the realm to
be used is obtained from a nameserver, there is a danger of being
spoofed if the nameservice providing the realm name is not
authenticated. This might result in the use of a realm which has
been compromised, and would result in an attacker's ability to
compromise the authentication of the application server to the
client.]. If the client does not already possess a ticket-granting
ticket for the appropriate realm, then one must be obtained. This is
first attempted by requesting a ticket-granting ticket for the
destination realm from the local Kerberos server (using the
KRB_TGS_REQ message recursively). The Kerberos server may return a
TGT for the desired realm in which case one can proceed.
Alternatively, the Kerberos server may return a TGT for a realm which
is "closer" to the desired realm (further along the standard
hierarchical path), in which case this step must be repeated with a
Kerberos server in the realm specified in the returned TGT. If
neither are returned, then the request must be retried with a
Kerberos server for a realm higher in the hierarchy. This request
will itself require a ticket-granting ticket for the higher realm
which must be obtained by recursively applying these directions.
Once the client obtains a ticket-granting ticket for the appropriate
realm, it determines which Kerberos servers serve that realm, and
contacts one. The list might be obtained through a configuration file
or network service; as long as the secret keys exchanged by realms
are kept secret, only denial of service results from a false Kerberos
server.
As in the AS exchange, the client may specify a number of options in
the KRB_TGS_REQ message. The client prepares the KRB_TGS_REQ
message, providing an authentication header as an element of the
padata field, and including the same fields as used in the KRB_AS_REQ
message along with several optional fields: the enc-authorization-
data field for application server use and additional tickets required
by some options.
In preparing the authentication header, the client can select a sub-
session key under which the response from the Kerberos server will be
encrypted (If the client selects a sub-session key, care must be
taken to ensure the randomness of the selected subsession key. One
approach would be to generate a random number and XOR it with the
session key from the ticket-granting ticket.). If the sub-session key
is not specified, the session key from the ticket-granting ticket
will be used. If the enc-authorization-data is present, it must be
encrypted in the sub-session key, if present, from the authenticator
portion of the authentication header, or if not present in the
session key from the ticket-granting ticket.
Once prepared, the message is sent to a Kerberos server for the
destination realm. See section A.5 for pseudocode.
Next: 3.3.2. Receipt of KRB_TGS_REQ message
Connected: An Internet Encyclopedia
3.3.1. Generation of KRB_TGS_REQ message
|