Kerberos:Windows 8.1 上的 kinit 导致票证缓存为空

Kerberos: kinit on Windows 8.1 leads to empty ticket cache

我在新设置的 Windows 8.1 机器上安装了 Kerberos for Windows

我这样编辑 C:\ProgramData\MIT\Kerberos5 目录中的 krb5.ini 文件:

[libdefaults]
  default_realm = HSHADOOPCLUSTER.DE

[realms]
  HSHADOOPCLUSTER.DE = {
    admin_server = had-job.server.de
    kdc = had-job.server.de
  }

重启后,我做了一个 kinit -kt daniel.keytab daniel 通过控制台对 Realm 进行身份验证。通过 Kerberos Ticket Manager 通过用户名和密码获取票据似乎也能正常工作,因为票据显示在 UI.

我想知道的是,当我调用 klist 时,我得到一个空列表,上面写着 cached tickets: 0:

这对我来说似乎不正常,因为我的 Ubuntu 计算机在 kinit 之后显示 klist 的有效门票。

我做错了什么?还有更多配置要做吗?有时我读到一个 ksetup 工具,但我不知道这里哪些设置是必要的,哪些不是...

=========================================== ===============

我设置后

[libdefaults] 
  ... 
  default_ccache_name = FILE:C:/ProgramData/Kerberos/krb5cc_%{uid}

在我的 krb5.conf 中,通过控制台和 Kerberos Ticket Manager 的 kinit 命令在指定路径中创建了一个文件。到目前为止一切看起来都很好。

但是:kinit 命令创建具有非常不同文件名(长与短)​​的票证,这取决于我是否 运行 控制台作为 "admin"(短名称) (长名称),请参见下面的屏幕截图。 Kerberos 票证管理器仅显示其中一张票证:

klist 命令仍然不显示缓存的票证,独立于控制台是否以管理员身份打开。

MIT Kerberos documentation 指出...

There are several kinds of credentials cache supported in the MIT Kerberos library. Not all are supported on every platform ...

  • FILE caches are the simplest and most portable. A simple flat file format is used to store one credential after another. This is the default...
  • API is only implemented on Windows. It communicates with a server process that holds the credentials in memory...

    The default credential cache name is determined by ...
  • The KRB5CCNAMEenvironment variable...
  • The default_ccache_name profile variable in [libdefaults]
  • The hardcoded default, DEFCCNAME

但是 AFAIK,在 Windows 上,hard-coded 默认缓存是 API:,这就是您可以使用 UI. kinit 也默认使用该协议。

我个人永远无法使用 klist 来使用该协议,即使使用“标准”语法,即
klist -c API:

set KRB5CCNAME=API:
klist

另一方面,如果您将 KRB5CCNAME 指向 FILE:***** 那么您可以 kinit 然后 klist 门票;但它不会显示在 UI 中,也无法用于网络浏览器等。


如果 klist 命令即使在设置了像 KRB5CCNAME 这样的环境变量(即 set KRB5CCNAME=C:\kerberos_cache\cache\krb5cache 之后也没有显示键,它是一个文件而不是目录。你必须创建父目录),那么你 运行 正在执行的 klist 命令很可能不是来自 C:\Program Files\MIT\Kerberos\bin 中的 MIT Kerberos Windows 安装,而是 klist 来自 Windows 本身的命令 C:\Windows\system32.

如果您有 cygwin 工具,您可以通过 运行ning which klist 检查。在这种情况下,最简单的解决方案是将 klist.exe 作为新文件复制到 MIT Kerberos 安装的 bin 目录中,即 klist_mit.exe。如果您使用 运行 klist_mit 命令,则应显示缓存条目。