我正在尝试为 Java 服务器设置一个密钥表以支持 Windows 网络上的 Kerberos 身份验证。即使在命令行工具级别,我也很难让它工作,甚至还没有达到服务器设置的程度!我刚才的计划是尝试让它在我的开发 PC 上运行,因为我有开发工作和调试要做。所以我的目标是让 Java 服务器在我的 PC 上运行,而客户端在连接到它的同一台机器上运行。
这就是我到目前为止所做的,我真的很笨拙,所以我可能会做各种错误的事情!
创建了服务主体名称
我让我们的一位域管理员运行此命令:
setspn -A TEST/pc-name.mydomain.com my-user-name
这似乎成功完成,我可以成功列出这个 SPN
setspn -L my-user-name
创建了一个密钥表文件
我用这个命令创建了一个 keytab:
ktpass /princ TEST/[email protected] /pass <my-password> /ptype KRB5_NT_SRV_HST /out <keytab-filename>
这似乎成功地创建了一个 keytab,尽管它确实警告 ptype 和帐户类型不匹配(但无论我为 ptype 选择什么,我都会收到相同的警告)。如果我运行这个命令:
klist -k file:/<keytab-filename>
然后它列出了我期望的 SPN,即 TEST/[email protected]
问题!
现在我想检查 keytab 是否适用于这个 SPN,所以我正在运行
kinit -t <keytab-filename> TEST/[email protected]
然后我得到一个错误“krb_error 6 Client not found in Kerberos database”。
我究竟做错了什么?