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

D. *_*ler 4 kerberos windows-authentication klist

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

  • 域:未设置
  • 工作组:工作组

我编辑了目录中的krb5.ini文件,C:\ProgramData\MIT\Kerberos5如下所示:

[libdefaults]
  default_realm = HSHADOOPCLUSTER.DE

[realms]
  HSHADOOPCLUSTER.DE = {
    admin_server = had-job.server.de
    kdc = had-job.server.de
  }
Run Code Online (Sandbox Code Playgroud)

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

我想知道的是,当我调用 a 时,klist我会得到一个空列表,它说的是cached tickets: 0

在此处输入图片说明

这对我来说似乎不正常,因为我的 Ubuntu 计算机klistkinit.

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

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

我设置后

[libdefaults] 
  ... 
  default_ccache_name = FILE:C:/ProgramData/Kerberos/krb5cc_%{uid}
Run Code Online (Sandbox Code Playgroud)

在 my 中krb5.confkinit通过控制台和 Kerberos 票证管理器的命令在指定路径中创建一个文件。到目前为止,一切看起来都很好。

但是:该kinit命令会创建文件名非常不同(长与短)​​的票证,具体取决于我是否以“admin”(短名称)或不以(长名称)身份运行控制台,请参阅下面的屏幕截图。Kerberos 票证管理器仅显示其中一张票证:

  • 如果以管理员身份运行:
    • 显示我通过管理控制台创建的票证
    • 创建具有短文件名的票证文件
  • 如果正常运行:
    • 显示我通过“普通”控制台创建的票
    • 创建具有长文件名的票证文件

在此处输入图片说明

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

Sam*_*ter 6

MIT Kerberos文档指出...

MIT Kerberos 库支持多种凭证缓存。并非所有平台都支持所有...

  • FILE缓存是最简单和最便携的。一种简单的平面文件格式用于存储一个又一个凭证。这是默认...
  • API仅在 Windows 上实现。它与在内存中保存凭据的服务器进程通信...

    默认凭据缓存名称由...确定
  • KRB5CCNAME环境变量...
  • [libdefaults] 中default_ccache_name配置文件变量
  • 硬编码的默认值, DEFCCNAME

但是 AFAIK,在 Windows 上,硬编码的默认缓存是API:,这就是您可以使用 UI 管理的内容。kinit默认情况下也使用该协议。

我个人从来没有可以使用klist使用该协议,即使有“标准”语法,即要么
  klist -c API:

  set KRB5CCNAME=API:
  klist

在另一方面,如果你点KRB5CCNAMEFILE:*****话可以kinitklist车票; 但它不会显示在 UI 中,也不适用于 Web 浏览器等。


如果klist即使在设置环境变量KRB5CCNAME(即set KRB5CCNAME=C:\kerberos_cache\cache\krb5cache,它是一个文件而不是目录。您必须手动创建父目录)之后,命令仍未显示密钥,那么klist您运行的命令很可能不是来自 MIT Kerberos的Windows安装中C:\Program Files\MIT\Kerberos\bin而是klist从Windows本身的命令C:\Windows\system32

which klist如果你有cygwin工具,你可以通过运行来检查。在这种情况下,最简单的办法就是复制klist.exe到MIT Kerberos安装的bin目录作为一个新的文件,即klist_mit.exe。如果您运行klist_mit命令,应显示缓存条目。

  • @D.Müller——我的 2 美分:Windows 附带一个自定义的 `klist.exe` 命令,它似乎是 SSPI 特定的,但没有 `kinit.exe`;如果您安装了 MIT Kerberos,那么您的 `kinit` 应该生成 GSSAPI 票证,这些票证对 Microsoft SSPI 库(即对 `klist.exe` 和 Internet Explorer)“不可见”,但对 Java 可见(以及正确配置的 Chrome 和 Firefox) ) (5认同)
  • 我只是在“krb5.conf”文件中将“default_ccache_name”设置为“FILE:C:/ProgramData/Kerberos/krb5cc_%{uid}”。“kinit”命令现在在此目录中创建票证文件。我仍然能够在用户界面中看到票证,并且“klist”仍然显示没有缓存的票证。 (2认同)