spring-security-kerberos 无法读取 key 表
我正在尝试关注 this tutorial for spring-security-kerberos 我有一个 key 表,里面有一个主体:
ktutil: rkt http-web.keytab
ktutil: l
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
1 3 HTTP/aulfeldt.hta.nightly@WAD.ENG.HYTRUST.COM
此 key 表是使用以下命令在 win 2k8 域 Controller 上生成的:
ktpass/out http-web.keytab/mapuser aulfeldt-hta-nightly@WAD.ENG.HYTRUST.COM/princ HTTP/aulfeldt.hta.nightly@WAD.ENG.HYTRUST.COM/pass *
复制到 spnego.xml 中使用的测试 Web 服务器:
<bean class="org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator">
<property name="servicePrincipal" value="HTTP/aulfeldt.hta.nightly@WAD.ENG.HYTRUST.COM" />
<property name="keyTabLocation" value="/WEB-INF/http-web.keytab" />
<property name="debug" value="true" />
</bean>
但找不到校长:
Key for the principal HTTP/aulfeldt.hta.nightly@WAD.ENG.HYTRUST.COM not available in
jndi:/localhost/spring-security-kerberos-sample-1.0.0.CI-SNAPSHOT/WEB-INF/http-web.keytab
[Krb5LoginModule] authentication failed
Unable to obtain password from user
我已经尝试将 Web 服务器(Centos 5.5、tomcat6)加入到 AD WAD.ENG.HYTRUST.COM 并且可以使用 AD 凭据登录然后使用/etc/krb5.keytab 中的主体只是为了看看它是否可以被阅读...同样的回应。我还尝试了很多关于大写和小写名称的变体。
ps今天早上从git上查了一下。
请您参考如下方法:
有几个错误导致“无法从用户那里获取密码”:
- 错误地指定了 keytab 文件的位置(就像@jasop 指出);它应该是这样的
classpath:http-web.keytab
或file:c:/http-web.keytabl
- 错误指定的主体名称(即主体名称 与实际生成的 key 表文件不匹配)
- keytab 文件路径中的空格(注意确定这是否曾经被 已修复),- 看到关于 SPRING SECURITY KERBEROS/SPNEGO EXTENSION 的评论中的投诉SpringSource 博客条目,并收到关于我的开发环境的证据 - Windows 7/Java 6, - 必须始终考虑绝对路径(即使 keytab 由类路径引用且没有空格)
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。