kinit & pam_sss:在获取初始凭据时找不到请求领域的 KDC

Sau*_*aus 6 active-directory kerberos pam windows-server-2008-r2 sssd

我在 CentOS 6.3 对 2008R2 AD DC 进行身份验证的这个线程中描述一个非常相似的问题。

这是我的 krb5.conf,我知道 XXXXXXX.LOCAL 是真正的域名:

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

[libdefaults]
 default_realm = XXXXXXX.LOCAL
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 verify_ap_req_nofail = false

[realms]
 XXXXXXX.LOCAL = {
 kdc = ad1.XXXXXXX.local
 kdc = ad2.XXXXXXX.local
 admin_server = ad1.XXXXXXX.local
 default_domain = XXXXXXX.LOCAL
}

[domain_realm]
 .XXXXXXX.local = XXXXXXX.LOCAL
 XXXXXXX.local = XXXXXXX.LOCAL
 .XXXXXXX.com = XXXXXXX.LOCAL
 XXXXXXX.com = XXXXXXX.LOCAL
Run Code Online (Sandbox Code Playgroud)

当我做一个:

kinit 用户名@XXXXXXX.LOCAL

一切都按预期工作, klist -e 返回它应该的详细信息,但是当我尝试执行以下操作时:

用户名

sssd krb5_child.log 显示以下内容:

[unpack_buffer] (0x0100): cmd [241] uid [10002] gid [10002] validate [false] offline [false] UPN [username@XXXXXXX.COM]
[unpack_buffer] (0x0100): ccname: [FILE:/tmp/krb5cc_10002_XXXXXX] keytab: [/etc/krb5.keytab]
[krb5_child_setup] (0x0400): Will perform online auth
[krb5_child_setup] (0x0100): Cannot read [SSSD_KRB5_RENEWABLE_LIFETIME] from environment.
[krb5_child_setup] (0x0100): Cannot read [SSSD_KRB5_LIFETIME] from environment.
[krb5_set_canonicalize] (0x0100): SSSD_KRB5_CANONICALIZE is set to [false]
[krb5_child_setup] (0x0100): Not using FAST.
[get_and_save_tgt] (0x0400): Attempting kinit for realm [XXXXXXX.COM]
[get_and_save_tgt] (0x0020): 977: [-1765328230][Cannot find KDC for requested realm]
[kerr_handle_error] (0x0020): 1030: [-1765328230][Cannot find KDC for requested realm]
[prepare_response_message] (0x0400): Building response for result [-1765328230]
[main] (0x0400): krb5_child completed successfully
Run Code Online (Sandbox Code Playgroud)

我也知道 XXXXXXX.COM 是 AD 树中 XXXXXXX.LOCAL 的别名,并且运行:

kinit 用户名@XXXXXXX.COM

产生与 krb5_child.log 中完全相同的错误

kinit:在获取初始凭据时找不到请求领域的 KDC

几天来,我一直在努力解决这个问题,希望得到任何指点。:)

abb*_*bra 6

您处理的称为企业委托人。您只有一个 AD 域,但用户可以关联其他用户主体名称 (UPN),因此除了 XXXX.LOCAL 之外,他们还可以拥有 XXXX.COM 并使用 user@XXXX.COM 代替 user@XXXX.LOCAL。

从 1.10 开始,SSSD 确实支持企业主体。影响 1.10 beta 版本的实现中的错误很少,但它们在 Fedora 19+ 中可用的最终版本之前得到解决。

但是,此更改在 RHEL 6.x(或 CentOS 6.x)中不可用,因为对企业主体的支持相对具有侵入性,并且未向后移植到 1.9.x。

您可能有兴趣在https://bugzilla.redhat.com/show_bug.cgi?id=972357https://bugzilla.redhat.com/show_bug.cgi?id=924404 中查找详细信息


Fre*_*Dog 4

如果您未在 中指定领域krb5.conf并关闭 DNS 查找,您的主机将无法知道 XXXXXX.COM 是 XXXXXX.LOCAL 的别名。

像这样在 krb5.conf 中添加一个领域部分,看看会发生什么。

XXXXXXX.COM = {
 kdc = ad1.XXXXXXX.local
 kdc = ad2.XXXXXXX.local
 admin_server = ad1.XXXXXXX.local

}
Run Code Online (Sandbox Code Playgroud)

打开realm 和kdc 的dns 查找也可以完成同样的事情。

dig -t srv _kerberos._udp.XXXXXX.com 
Run Code Online (Sandbox Code Playgroud)

应该是上面使用的真实服务器。

但是,我不确定这是否真的是正确的事情。上面的 krb5.conf 应该将您置于 XXXXXX.LOCAL 领域,尝试找出 sssd 忽略的原因,这可能会引导您走向正确的方向。