4

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

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

我在这样的目录中编辑了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
  }

重新启动后,我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}

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

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

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

在此处输入图像描述

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

4

1 回答 1

6

麻省理工学院Kerberos 文档指出...

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

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

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

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

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

  set KRB5CCNAME=API:
  klist

另一方面,如果你指向KRB5CCNAMEaFILE:*****那么你就可以kinit买票klist;但它不会显示在 UI 中,也不会被 Web 浏览器等使用。


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

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

于 2017-01-20T20:08:48.563 回答