为啥 MIT-Kerberos 的“本地领域推荐”失败?

Posted

技术标签:

【中文标题】为啥 MIT-Kerberos 的“本地领域推荐”失败?【英文标题】:Why does "Local realm referral" fail with MIT-Kerberos?为什么 MIT-Kerberos 的“本地领域推荐”失败? 【发布时间】:2017-06-17 18:44:47 【问题描述】:

我正在尝试在 2 个 KDC(EXAMPLE.COM 和 HADOOP.COM)之间设置跨领域身份验证,以便领域EXAMPLE.COM 中的用户可以访问 HADOOP.COM 中的服务。我在我的 krb5.conf 中添加了一个 capaths 部分:

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = EXAMPLE.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h 
 renew_lifetime = 7d
 forwardable = true

[realms]
 EXAMPLE.COM =  
  kdc = examplekdc.example.com
  admin_server = examplekdc.example.com
 

 HADOOP.COM =  
  kdc = hadoopkdc.hadoop.com
  admin_server = hadoopkdc.hadoop.com
 

[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM

[capaths]
 HADOOP.COM =  
  EXAMPLE.COM = . 
 

我还向两个 KDC 添加了所需的主体 krbtgt/HADOOP.COM@EXAMPLE.COM。到目前为止,一切正常,我的应用程序能够做它需要做的事情。

我关心的是我在EXAMPLE.COM上的跟踪日志中的以下行:

[158447] 1497720267.441664: TGS request result: -1765328377/Server myservice/hadoopkdc.hadoop.com@EXAMPLE.COM not found in Kerberos database
[158447] 1497720267.441680: Local realm referral failed; trying fallback realm HADOOP.COM

我的问题如下:

    这个本地领域推荐到底是什么?这是 kerberos 行话吗 对于跨领域请求? 为什么本地领域推荐会失败?如何明确指定本地领域引用的发生方式? 回退领域的含义是什么?我该如何指定?

从我的 krb5.conf 中可以看出,我没有明确指定回退领域或引用,所以我认为 kerberos 正在为它们选择默认值。我想知道如何明确指定它们。

【问题讨论】:

哎呀,我没有练习了。我不得不去 grep 该错误消息的来源。早在那天,我就会确定到底发生了什么。 【参考方案1】:
[158447] 1497720267.441664: TGS request result: -1765328377/Server myservice/hadoopkdc.hadoop.com@EXAMPLE.COM not found in Kerberos database

您的客户要求 KDC 提供服务主体。您的 KDC 不知道如何找到该主体的领域。 我相信,如果您在krb5.conf 使用的EXAMPLE.COM KDC 的[domain_realms] 部分添加一个条目,其内容类似于

[domain_realms]
    .hadoop.com = HADOOP.COM

然后 KDC 将知道以 hadoop.com 结尾的主机由 HADOOP.COM 领域提供服务,并会自行尝试引荐。

[158447] 1497720267.441680: Local realm referral failed; trying fallback realm HADOOP.COM

当客户端在第一次请求时从 KDC 收到错误时,这是​​在 src/lib/krb5/krb/get_creds.c 中的 try_fallback 函数中产生的。 客户端在猜测服务的领域时比 KDC 更积极一些,因为如果客户端无法猜测,请求就会失败。 客户端尝试HADOOP.COM,因为它最后的猜测是剥离主机名并尝试大写域名。 如果您正确配置了 KDC,那么您将保存一个请求。与 MIT Kerberos 相比,Windows 主机可能更关心 KDC 的正确配置。

【讨论】:

以上是关于为啥 MIT-Kerberos 的“本地领域推荐”失败?的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用 glTranslatef?为啥不直接更改渲染坐标?

为啥 SQL Server GEOGRAPHY 允许 -15069° 和 +15069° 之间的经度?为啥是±15069°?

gprof 适合分析长时间运行的程序吗?为啥或者为啥不?

fread()函数第一次读取成功,但第二次读取失败,为啥为啥为啥,

为啥 CoreGui Roblox 锁定在 DataModel 中,为啥受信任的用户不能使用 CoreScripts?

为啥 CAP 定理中的 RDBMS 分区不能容忍,为啥它可用?