#### [capaths]

In order to perform direct (non-hierarchical) cross-realm authentication, a database is needed to construct the authentication paths between the realms. This section defines that database.

A client will use this section to find the authentication path between its realm and the realm of the server. The server will use this section to verify the authentication path used by the client, by checking the transited field of the received ticket.

There is a tag for each participating realm, and each tag has subtags for each of the realms. The value of the subtags is an intermediate realm which may participate in the cross-realm authentication. The subtags may be repeated if there is more then one intermediate realm. A value of "." means that the two realms share keys directly, and no intermediate realms should be allowd to participate.

There are n**2 possible entries in this table, but only those entries which will be needed on the client or the server need to be present. The client needs a tag for its local realm, with subtags for all the realms of servers it will need to authenticate with. A server needs a tag for each realm of the clients it will serve.

For example, ANL.GOV, PNL.GOV, and NERSC.GOV all wish to use the ES.NET realm as an intermediate realm. ANL has a sub realm of TEST.ANL.GOV which will authenticate with NERSC.GOV but not PNL.GOV. The [capaths] section for ANL.GOV systems would look like this:

         [capaths]
             ANL.GOV = {
                 TEST.ANL.GOV = .
                 PNL.GOV = ES.NET
                 NERSC.GOV = ES.NET
                 ES.NET = .
             }
             TEST.ANL.GOV = {
                 ANL.GOV = .
             }
             PNL.GOV = {
                 ANL.GOV = ES.NET
             }
             NERSC.GOV = {
                 ANL.GOV = ES.NET
             }
             ES.NET = {
                 ANL.GOV = .
             }

The [capaths] section of the configuration file used on NERSC.GOV systems would look like this:

         [capaths]
             NERSC.GOV = {
                 ANL.GOV = ES.NET
                 TEST.ANL.GOV = ES.NET
                 TEST.ANL.GOV = ANL.GOV
                 PNL.GOV = ES.NET
                 ES.NET = .
             }
             ANL.GOV = {
                 NERSC.GOV = ES.NET
             }
             PNL.GOV = {
                 NERSC.GOV = ES.NET
             }
             ES.NET = {
                 NERSC.GOV = .
             }
             TEST.ANL.GOV = {
                 NERSC.GOV = ANL.GOV
                 NERSC.GOV = ES.NET
             }

In the above examples, the ordering is not important, except when the same subtag name is used more then once. The client will use this to determine the path. (It is not important to the server, since the transited field is not sorted.)

This feature is not currently supported by DCE. DCE security servers can be used with Kerberized clients and servers, but versions prior to DCE 1.1 did not fill in the transited field, and should be used with caution.