Set the canonicalize flag in TGS requests and accept cross-realm referral tickets.
authorSam Hartman <hartmans@mit.edu>
Thu, 21 Sep 2006 01:48:50 +0000 (01:48 +0000)
committerSam Hartman <hartmans@mit.edu>
Thu, 21 Sep 2006 01:48:50 +0000 (01:48 +0000)
commit25860eac35980ab0d8d786fe1d06ced26a04d2db
tree74e4b87fee38208ea1378bb6868c009964e9cf3f
parentb2239415f139c8822715180716e41b4f9606232e
Set the canonicalize flag in TGS requests and accept cross-realm referral tickets.
We do not yet accept tickets in which the server name changes.

* krb5_sname_to_principal:   If there is no domain realm mapping return null realm
*krb5_get_cred_via_tkt: New behavior as described below

1) the referrals case:
  - check for TGT for initial realm
    - if a remote realm was specified (which must have happened via a
      domain_realm mapping), obtain a TGT for it the standard way and
      start with that.
  - use client realm for server if not specified
  - iterate through this loop:
    - request ticket with referrals turned on
    - if that fails:
      - if this was the first request, punt to non-referrals case
      - otherwise, retry once without referrals turned on then terminate
        either way
    - if it works, either use the service ticket or follow the referral path
    - if loop count exceeded, hardfail
2) the nonreferrals case
  - this is mostly the old walk_realm_tree TGT-finding (which allows
    limited shortcut referrals per 4120) followed by a standard tgs-req.
  - originally requested principal is used for this, although if we were
    handed something without a realm, determine a fallback realm based on
    DNS TXT records or a truncation of the domain name.

ticket: 2652
Owner: amb

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@18598 dc483132-0cff-0310-8789-dd5450dbe970
13 files changed:
src/appl/telnet/libtelnet/kerberos5.c
src/include/k5-int.h
src/include/krb5/krb5.hin
src/lib/krb5/krb/copy_princ.c
src/lib/krb5/krb/gc_frm_kdc.c
src/lib/krb5/krb/gc_via_tkt.c
src/lib/krb5/krb/parse.c
src/lib/krb5/krb/princ_comp.c
src/lib/krb5/krb/walk_rtree.c
src/lib/krb5/libkrb5.exports
src/lib/krb5/os/hst_realm.c
src/lib/krb5/os/sn2princ.c
src/lib/krb5_32.def