-1

我正在尝试使用这些说明使用 apache 设置 Active Directory Kerberos 身份验证。

我希望 apache 能够在不通过 Samba 将 apache 机器加入域的情况下针对 AD 对用户进行身份验证。我对 Kerberos 的理解是,我的 apache 服务器应该不需要加入域(我认为上面的说明只是这样做,以便他们可以轻松生成 keytab)。

但实际上,如果我让 apache 主机离开域,它将无法工作。只要它保持连接,它就可以正常工作。当我离开并尝试访问我的安全 URL 时,我收到了凭据挑战,但我输入的凭据不被接受。在这种情况下,apache 日志中会出现以下内容:

[Wed Mar 27 12:33:38 2013] [debug] src/mod_auth_kerb.c(1939): [client 192.168.201.52] kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
[Wed Mar 27 12:33:43 2013] [debug] src/mod_auth_kerb.c(1939): [client 192.168.201.52] kerb_authenticate_user entered with user (NULL) and auth_type Kerberos
[Wed Mar 27 12:33:43 2013] [debug] src/mod_auth_kerb.c(1031): [client 192.168.201.52] Using HTTP/centosjb.iga.local@ABC.LOCAL as server principal for password verification
[Wed Mar 27 12:33:43 2013] [debug] src/mod_auth_kerb.c(735): [client 192.168.201.52] Trying to get TGT for user myuser@ABC.LOCAL
[Wed Mar 27 12:33:44 2013] [debug] src/mod_auth_kerb.c(645): [client 192.168.201.52] Trying to verify authenticity of KDC using principal HTTP/centosjb.iga.local@ABC.LOCAL
[Wed Mar 27 12:33:44 2013] [debug] src/mod_auth_kerb.c(660): [client 192.168.201.52] krb5_get_credentials() failed when verifying KDC
[Wed Mar 27 12:33:44 2013] [error] [client 192.168.201.52] failed to verify krb5 credentials: Server not found in Kerberos database
[Wed Mar 27 12:33:44 2013] [debug] src/mod_auth_kerb.c(1110): [client 192.168.201.52] kerb_authenticate_user_krb5pwd ret=401 user=(NULL) authtype=(NULL)

这是我的 krb5.conf 文件(我省略了日志文件部分):

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

[realms]
 ABC.LOCAL = {
  kdc = labdc12.abc.local
  admin_server = labdc12.abc.local
 }

[domain_realm]
 .abc.local = ABC.LOCAL
 abc.local = ABC.LOCAL

我有一种感觉,它可能像 DNS 问题一样简单,基于“找不到服务器”消息......即我的 apache 主机只有在加入域时才能解决。但是使用 ping 所有名称进行测试就可以解决问题。谁能解释为什么这不起作用?

4

1 回答 1

2

此主机的 SPN 会随着计算机帐户的删除而被删除(在 Kerberos 数据库中找不到服务器)。最好的方法是:

$ net ads join
$ net ads keytab add HTTP

等待它在所有 DC 中复制,您的问题应该会消失。

换句话说:除非没有为该机器帐户注册 SPN,否则您将失败并显示上述消息。有关错误 0x7,请参见此处

于 2013-03-27T21:35:33.307 回答