[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [HTCondor-users] Kerberos node authentication



Hi Andreas,

Thanks a lot for taking the time.

On 11/14/25 4:51 PM, Andreas Haupt wrote:

The client principal name is build like this (to my knowledge):

$(KERBEROS_SERVER_SERVICE)/<fqdn.of.the.node>@<REALM>

... whereas <REALM> is a callout to the default_realm value in
/etc/krb5.conf

Following your advice (and once I've deleted the principals (and keytabs!) then re-created them using condor/ instead of host/), I've simplified the config down to


CONDOR_HOST = htm.dev.example.com
use role:submit

SEC_DEFAULT_AUTHENTICATION_METHODS = KERBEROS

KERBEROS_CLIENT_KEYTAB = /etc/condor/hts01.dev.example.com.keytab
KERBEROS_SERVER_SERVICE = condor
KERBEROS_MAP_FILE = /etc/condor/condor.kmap


No realm defined nothing added; as you predicted, it picked the realm from /etc/krb5.conf but... still no luck!

I think in my case the problem is that for some reasons, in condor_io/condor_auth_kerberos.cpp, Condor_Auth_Kerberos :: map_kerberos_name(), this part:

[...]
Âif (!map_domain_name(at_sign+1)) {
            return FALSE;
        }
[...]

... returns FALSE and that's because Condor_Auth_Kerberos :: map_domain_name() in turn returns FALSE at

  if (RealmMap) {
        auto itr = RealmMap->find(domain);
        if (itr != RealmMap->end()) {
            if (IsFulldebug(D_SECURITY)) {
                dprintf (D_SECURITY, "KERBEROS: mapping realm %s to domain %s.\n",
                    domain, itr->second.c_str());
            }
      setRemoteDomain(itr->second.c_str());
      return TRUE;
    } else {
            // if the map exists, they must be listed. and they're NOT!
            return FALSE;
        }
  }


I do have a valid mapping file, with the mapping listed yet it still goes the " // if the map exists, they must be listed. and they're NOT!" way instead of showing "KERBEROS: mapping realm %s to domain %s.\n". (A debug message in that code path with a nicely formatted output of RealmMap's actual value plus a brief note/explanation might have helped... )

The only particular aspect in my configuration is the fact that my domain is a subdomain of the realm (EXAMPLE.COM --> dev.example.com ) but why would that be relevant?

I'll have a closer look at Condor_Auth_Kerberos :: init_realm_mapping()


.