创建一个密钥表以在 Windows 中与 kinit 一起使用



我正在编写一个 pGina 插件,以便在登录时从我们的 KDC 获取 AFS 令牌和 Kerberos TGT,在写作时我注意到 kinit 的一个"功能"是它不会让您提供任何输入,除非它来自键盘,我的想法只是重定向标准输入......

有人建议为主体使用keytab文件,这似乎非常简单,直到我意识到我只在Linux上使用kutil,并且在使用Windows版本的ktpass.exe时遇到困难。我已经反复尝试使用大量参数组合来创建密钥表,但到目前为止绝对没有成功,我发出的当前命令是:

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 设置,但这似乎也不起作用......任何人都对这如何工作有任何经验/想法?

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通过SSH连接到Unix主机,Firefox/Chrome/IE对Unix Web服务(Apache/mod_auth_kerb)进行身份验证等。

相关内容

  • 没有找到相关文章

最新更新