【问题标题】:Kerberos: kinit on Windows 8.1 leads to empty ticket cacheKerberos:Windows 8.1 上的 kinit 导致空票证缓存
【发布时间】:2017-06-05 11:01:21
【问题描述】:

我在一台新安装的 Windows 8.1 机器上安装了 Kerberos for Windows

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

我在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 中,kinit 命令通过控制台和 Kerberos Ticket Manager 在指定路径中创建一个文件。到目前为止,一切看起来都不错。

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

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

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

【问题讨论】:

  • 您在这个论坛中有几个未解决的问题;我已要求对其中一些进行澄清,但您没有对其中任何一个作出回应。在这种情况下,它最终会成为浪费一个人试图帮助你的时间。我有兴趣提供帮助,但在您回答之前的问题之前,我将暂缓回答您的问题。
  • @D.Müller - 你的问题解决了吗? (它可能对我有帮助:))
  • 我只是在使用 Windows 控制台并创建一个“kinit -kt C:\myuser.keytab myusername”。票证缓存仍显示为空,但票证已创建并且我可以进行身份​​验证(例如在我的 Kerberized Hadoop 集群上)!

标签: windows-authentication kerberos klist


【解决方案1】:

MIT Kerberos documentation 声明...

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

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

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

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

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

set KRB5CCNAME=API:
klist

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


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

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

【讨论】:

  • 我只是在“krb5.conf”文件中将“default_ccache_name”设置为“FILE:C:/ProgramData/Kerberos/krb5cc_%{uid}”。 “kinit”命令现在在此目录中创建票证文件。我仍然可以在我的 UI 中看到工单,并且“klist”仍然没有显示缓存的工单。
  • 奇怪的行为:如果我以管理员身份打开我的 Windows 控制台并进行“kinit”,Kerberos Ticket Manager UI 不会显示票证。但如果我正常运行控制台,“kinit”会创建一个显示在 UI 中的票证。但是,“klist”仍然不起作用!
  • klist 不显示门票,但它们是有效的,例如我在我的 Windows 控制台中创建 kinit 后,可以打开受 Kerberos 保护的 Hadoop Web-UI。
  • @D.Müller -- 我的 2 美分:Windows 附带了一个自定义的 klist.exe 命令,该命令似乎是特定于 SSPI 的,但没有 kinit.exe;如果您安装了 MIT Kerberos,那么您的 kinit 应该生成对 Microsoft SSPI 库(即 klist.exe 和 Internet Explorer)“不可见”但对 Java 可见的 GSSAPI 票证,(以及正确配置的 Chrome 和 Firefox)
  • 这条评论是正确的答案。我今天在 Windows 10 上遇到了这个问题。我将编辑您的答案以包含它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
  • 2023-03-19
  • 1970-01-01
  • 2013-01-16
相关资源
最近更新 更多