spring-security-kerberos can't read keytab?
我正在尝试按照本教程的spring-security-kerberos进行操作
我有一个带有一个主体的密钥表:
1 2 3 4 5 | ktutil: rkt http-web.keytab ktutil: l slot KVNO Principal ---- ---- --------------------------------------------------------------------- 1 3 HTTP/[email protected] |
此密钥表是使用以下命令在win 2k8域控制器上生成的:
已复制到spnego.xml中使用的测试Web服务器上:
1 2 3 4 5 | <bean class="org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator"> <property name="servicePrincipal" value="HTTP/[email protected]" /> <property name="keyTabLocation" value="/WEB-INF/http-web.keytab" /> <property name="debug" value="true" /> </bean> |
但找不到主体:
1 2 3 4 | Key for the principal HTTP/[email protected] 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中检出了它。
有几个错误导致"无法从用户获取密码":
指出);它应该像
与生成密钥表文件的实际值不匹配)
已修复),-在关于SPRING SECURITY KERBEROS / SPNEGO EXTENSION SpringSource博客条目的评论中看到了抱怨,并且收到了关于我的开发环境的证据-Windows 7 / Java 6,-必须始终考虑绝对路径(即使classpath引用了keytab)没有空格)
我遇到了完全相同的问题。
问题是您的" keyTabLocation"设置。
您不能将其设置为/WEB-INF/http-web.keytab
您需要将其设置为文件路径或类路径中的某个内容。
例如,我将文件放在类路径上并进行以下设置:
1 | <property name="keyTabLocation" value="classpath:http-web.keytab" /> |