我想手动登录到 ldap 服务器。身份验证使用 Kerberos。我在那里注册了用户名和密码。
kinit username@servername
它工作正常,并创建了一个有效的 TGT,我可以使用来查看
klist
但之后该怎么做呢?如何使用 TGT 连接到 ldap 服务器?
我读到过,这里需要 keytab 文件。但我在 /etc/ 中没有生成 krb5.keytab 文件。
答案1
一如既往,“视情况而定”。我假设您正在使用某种 Linux。
对于一次性身份验证,只要您的 ldap 客户端支持 GSSAPI,您就可以使用 GSSAPI 机制。因此,一旦您成功 kinit 并且拥有 tgt 票证,您就可以使用类似这样的方法(使用公开可用的 freeipa 演示 (http://www.freeipa.org/page/Demo):
$ kinit [email protected]
$ kinit [email protected]
Password for [email protected]:
$ klist
Ticket cache: KEYRING:persistent:1000:1000
Default principal: [email protected]
Valid starting Expires Service principal
04/20/2016 18:30:56 04/21/2016 18:30:51 krbtgt/[email protected]
renew until 04/27/2016 18:30:51
]$ ldapsearch -LLL -Y GSSAPI -h ipa.demo1.freeipa.org -b cn=users,cn=accounts,dc=demo1,dc=freeipa,dc=org "(nsaccountlock=TRUE)" uid nsaccountlock
SASL/GSSAPI authentication started
SASL username: [email protected]
SASL SSF: 56
SASL data security layer installed.
[@lap0405 ~]$ klist
Ticket cache: KEYRING:persistent:1000:1000
Default principal: [email protected]
Valid starting Expires Service principal
04/20/2016 18:31:09 04/21/2016 18:30:51 ldap/[email protected]
renew until 04/27/2016 18:30:51
04/20/2016 18:31:09 04/21/2016 18:30:51 ldap/ipa.demo1.freeipa.org@
renew until 04/27/2016 18:30:51
04/20/2016 18:30:56 04/21/2016 18:30:51 krbtgt/[email protected]
renew until 04/27/2016 18:30:51
如您所见,我可以使用 kerberos 票证进行绑定,但没有结果,因为那里没有锁定的帐户。但它成功了。
使用 keybabs 并不复杂,但您需要先检索一个(或让别人为您检索一个)。执行此操作的方法因 kerberos 供应商而异(对于 AD kerberos,通常使用 ktpass.exe 获取它,在与 AD kerberos 通信的 Linux 上,您可以使用 msktutil (https://fuhm.net/software/msktutil/) 不是所有发行版都提供的标准软件,但效果非常好,对于 freeipa kerberos 域上的 linux 主机,您可以使用 ipa-getkeytab (http://www.freeipa.org/page/V4/Keytab_Retrieval),在标准 MIT kerberos 上,您可以使用 ktutil (http://web.mit.edu/kerberos/krb5-latest/doc/admin/admin_commands/ktutil.html)。
获得 keytab 后,需要使用 kinit -k -t /path/to/keytab_file -c /path/to/kerberos/cache[电子邮件保护]
之后,您可以使用 KRB5CCNAME 环境变量,您需要在脚本中使用 -c 开关将其指向您保存 keytab 缓存的路径,以便向 ldap 服务器进行身份验证。显然,票证将在几个小时后过期,因此您需要使用 cron 或 k5start 进行更新。
您不想使用 /etc/krb5.keytab 文件;这是主机文件(计算机加入 Kerberos 域时也是用户)。您需要一个特定于您需求的应用程序/用户密钥表。