创build密钥标签和服务主体名称

我试图设置一个Java服务器的密钥表,以支持Windowsnetworking上的Kerberos身份validation。 即使在命令行工具的级别上,我也努力工作,甚至还没有达到服务器设置! 我现在的计划是试着让它在我的开发PC上运行,因为我有开发工作和debugging的工作。 所以我的目标是让Java服务器运行在我的电脑上,并且运行在同一台机器上的客户端连接到它。

这就是我迄今为止所做的事情,我真的错过了自己的方式,所以我可以做各种错误的事情!

创build了一个服务主体名称

我有一个我们的域pipe理员运行这个命令:

setspn -A TEST/pc-name.mydomain.com my-user-name 

这似乎成功完成,我可以成功列出这个SPN

 setspn -L my-user-name 

创build一个keytab文件

我用这个命令创build了一个keytab:

 ktpass /princ TEST/[email protected] /pass <my-password> /ptype KRB5_NT_SRV_HST /out <keytab-filename> 

这似乎成功地创build了一个keytab,尽pipe它警告说ptype和accounttypes不匹配(但是无论我为ptypeselect什么,我都会得到相同的警告)。 如果我运行这个命令:

 klist -k file:/<keytab-filename> 

然后列出我期望的SPN,即TEST / [email protected]

问题!

现在我想检查keytab是否适用于这个SPN,所以我正在运行

 kinit -t <keytab-filename> TEST/[email protected] 

然后我得到一个错误“在Kerberos数据库中找不到krb_error 6客户端”。

我究竟做错了什么?

我不太确定my-user-name是指计算机对象还是活动目录中的用户对象; 我会认为这是一个用户对象。 在这种情况下,我认为setspn是不合适的。 这是为了修改现有机器帐户的SPN。 对于用户帐户,我怀疑SRV_HST是正确的。

显然,对与用户对象关联的SPN的支持是有限的; 我在某个地方读到,这真的只限于一个用户。 我也无法让您的ktpass调用为我工作,因为它坚持a)指定一个用户帐户(通过mapuser),应该与SPN相关联,b)设置SPN密码。 我认为后者是不可避免的通过ktpass创build一个keytab。

我设法以“标准方式”创build一个keytab,即通过build立一个专用的用户帐户并将其与一个SPN相关联:

 ktpass /princ TEST/host@DOMAIN /mapuser user@DOMAIN /pass * /out foo.keytab /ptype KRB5_NT_PRINCIPAL 

该操作(预期)打破了用户login,但是,然后,我可以kinit

  kinit -k -t /tmp/foo.keytab TEST/host@DOMAIN