spring-security-kerberos 无法读取 key 表

duanxz 阅读:16 2024-11-24 20:56:43 评论:0

我正在尝试关注 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上查了一下。

请您参考如下方法:

有几个错误导致“无法从用户那里获取密码”:

  1. 错误地指定了 keytab 文件的位置(就像@jasop 指出);它应该是这样的 classpath:http-web.keytabfile:c:/http-web.keytabl
  2. 错误指定的主体名称(即主体名称 与实际生成的 key 表文件不匹配)
  3. keytab 文件路径中的空格(注意确定这是否曾经被 已修复),- 看到关于 SPRING SECURITY KERBEROS/SPNEGO EXTENSION 的评论中的投诉SpringSource 博客条目,并收到关于我的开发环境的证据 - Windows 7/Java 6, - 必须始终考虑绝对路径(即使 keytab 由类路径引用且没有空格)


标签:Spring
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号