我正在编写一个pGina插件,用于在登录时从我们的KDC获取AFS令牌和Kerberos TGT,同时写道我注意到kinit的一个“功能”是它不会让你提供任何输入,除非它来自键盘,那里去了我只是想重定向标准输入......
有人建议使用keytab文件作为主体,这似乎非常简单,直到我意识到我只在linux上使用kutil并且遇到了ktpass.exe的Windows版本的困难。我已经多次尝试使用大量的参数组合来创建一个keytab但到目前为止一直没有成功,我发出的当前命令是:
ktpass /out key.tab /mapuser user$@MERP.EDU /princ user.merp.edu@MERP.EDU /crypto RC4-HMAC-NT /ptype KRB5_NT_PRINCIPAL /pass mahpasswordlol /target MERP.EDU
不幸的是,所有这些输出都是
Using legacy password setting method
FAIL: ldap_bind_s failed: 0x31
根据我的研究,根据我的研究是认证/加密问题,我已经尝试了其他DES设置,但这似乎也不起作用......任何人都有任何关于这可能如何工作的经验/想法?
答案 0 :(得分:10)
ktpass.exe确实很糟糕;我没有使用它。相反,只需在Unix上使用ktutil就可以使用密码独立创建匹配的密钥表,例如:
$ ktutil
ktutil: addent -password -p foo@BAR -k 1 -e aes128-cts-hmac-sha1-96
Password for foo@BAR:
ktutil: l
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
1 1 foo@BAR
ktutil: wkt /tmp/zz
$ klist -ek /tmp/zz
Keytab name: WRFILE:/tmp/zz
KVNO Principal
---- --------------------------------------------------------------------------
1 foo@BAR (aes128-cts-hmac-sha1-96)
LDAP绑定错误表示ktpass无法向域控制器验证您的身份;如果发生这种情况,您是否登录了域帐户?它必须是域帐户,而不是本地帐户(并且必须授权对AD进行必要的更改,但缺少这样会导致权限错误而不是绑定)。
FWIW,我们对此采取不同的方法:我们在Unix和AD领域之间使用跨领域信任。用户登录后获得的AD TGT足以获取Unix领域中的服务凭证;例如,我可以使用PuTTY连接到Unix主机,Firefox / Chrome / IE来验证Unix Web服务(Apache / mod_auth_kerb)等。