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

时间:2017-01-20 12:40:12

标签: windows-authentication kerberos klist

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

  • 域名:未设置
  • 工作组: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获取用户和密码的票证似乎也可以正常工作,因为票证显示在用户界面中。

我想知道的是,当我拨打klist时,我会收到一个空列表,其中包含类似cached tickets: 0的内容:

enter image description here

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

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

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

我设置

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

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

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

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

enter image description here

如果控制台是以管理员身份打开的话,klist命令仍然不会显示缓存的票证。

1 个答案:

答案 0 :(得分:4)

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获得此票;但它不会在用户界面中显示,也不会用于网络浏览器等。