我在 ubuntu 14.04 上设置了 samba 4 活动目录,如下所示Samba AD DC 操作指南原则上一切正常,但我无法使用 SPN 为 Web 应用程序运行 Kerberos 身份验证。当我尝试运行
kinit -k -t keytabfile http/myserver.mycompany.com
我总是得到一个
kinit: Client not found in Kerberos database while getting initial credentials
我目前已检查的内容:
- DNS 正在正向和反向工作,返回 FQN
- kinit 使用用户名
- dc 和 Web 服务器上的 nslookup 返回 myserver.mycompany.com
- myserver 已加入域并列在
CN=Computers,DC=mycompany,DC=com中 - 没有重复的 SPN
我创建了服务帐户/SPN/keytabs,如下所示:
samba-tool user create $ADS_USER $ADS_PW --userou=$USER_OU
samba-tool user setexpiry --noexpiry $ADS_USER
samba-tool spn add ${SERVICE_TYPE}/${SERVICE_HOST}.${MY_DOMAIN} $ADS_USER
samba-tool spn add ${SERVICE_TYPE}/${SERVICE_HOST} $ADS_USER
samba-tool spn list $ADS_USER
rm -f $MY_KEYTAB
samba-tool domain exportkeytab $MY_KEYTAB --principal=${SERVICE_TYPE}/${SERVICE_HOST}.${MY_DOMAIN}
samba-tool domain exportkeytab $MY_KEYTAB --principal=${SERVICE_TYPE}/${SERVICE_HOST}
运行 klist -k -e $MY_KEYTAB 时一切看起来都很好:
root@myhost:~# klist -ke ./test.keytab
Keytab name: FILE:./test.keytab
KVNO Principal
---- --------------------------------------------------------------------------
1 http/[email protected] (des-cbc-crc)
1 http/[email protected] (des-cbc-md5)
1 http/[email protected] (arcfour-hmac)
1 http/[email protected] (des-cbc-crc)
1 http/[email protected] (des-cbc-md5)
1 http/[email protected] (arcfour-hmac)
我迷路了,在谷歌上搜索了几个小时,不知道如何解决/修复“Kerberos 数据库中未找到客户端”错误。欢迎任何提示!
谢谢
客户端上的“/etc/krb5.conf”
[libdefaults]
debug = true
default_realm = MYCOMPANY.COM
dns_lookup_realm = false
dns_lookup_kdc = false
default_tkt_enctypes = rc4-hmac
default_tgs_enctypes = rc4-hmac
[realms]
MYCOMPANY.COM = {
kdc = dc01.mycompany.com
admin_server = dc01.mycompany.com
kpasswd_server = dc01.mycompany.com
#ktpasswd_server = dc01.mycompany.com
#admin_server = dc01.mycompany.com
}
[domain_realm]
.mycompany.com = MYCOMPANY.COM
mycompany.com = MYCOMPANY.COM
在直流服务器上 /etc/samba/smb.conf
[global]
debug level = 1
syslog = 1
max log size = 0
workgroup = MYCOMPANY
realm = MYCOMPANY.COM
netbios name = DC01
server role = active directory domain controller
server string = MYCOMPANY domain controller
server role check:inhibit = yes
dns forwarder = 192.168.22.1
idmap_ldb:use rfc2307 = yes
答案1
最后我得到了它!
这
samba-tool spn add ...
未按预期在目录中(重新)命名 UPN。我通过与 MS ADS 条目进行比较发现了这一点。因此,解决方法是在发出 exportkeytab 命令之前手动更改值:
- 使用 ldap 工具(我使用了 Apache Directory Studio)打开服务用户条目并
- 找到刚刚创建的用户编辑“userPrincipalName”以反映servicePrincipleName + REALM(在我的情况下为http /[电子邮件保护])
- 导出密钥表,一切按预期进行
在目标机器上
kinit -k -t http/myserver.mycompany.com
运行正常,没有任何问题!希望这能帮助其他尝试使用 Samba4 设置 SSO 的人...
答案2
最初我在 Redhat Linux 环境下出现以下错误。
kinit:获取初始凭证时未在 Kerberos 数据库中找到客户端
当我尝试使用以下服务帐户注册 F_KEY 时
$ kinit HOST/[email protected]
它提示我提供密码,然后它就成功了!
我能够在服务器的 /tmp 文件夹下生成“krb5cc_0”凭证缓存文件。
我能够使用命令“klist”列出有关临时 TGT 的所有详细信息。
- 有效起始
- 过期
- 服务主体