3

spring-security-kerberos のこのチュートリアルに従おうとしています 。1 つのプリンシパルを含むキータブがあります。

ktutil:  rkt http-web.keytab
ktutil:  l
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
   1    3 HTTP/aulfeldt.hta.nightly@WAD.ENG.HYTRUST.COM

このキータブは、win 2k8 ドメイン コントローラーで次のコマンドを使用して生成されました。

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からチェックアウトしました。

4

2 に答える 2

5

「ユーザーからパスワードを取得できません」につながるいくつかの間違いがあります。

  1. キータブファイルの誤って指定された場所(@jasopが指摘したように); それは次のようなものでなければなりませ classpath:http-web.keytabfile:c:/http-web.keytabl
  2. 誤って指定されたプリンシパル名 (つまり、keytab ファイルが生成された実際のプリンシパル名と一致しないプリンシパル名)
  3. キータブ ファイル パスの空白 (これが修正されたかどうかを確認してください)、- SPRING SECURITY KERBEROS/SPNEGO EXTENSION SpringSource ブログ エントリのコメントに苦情があり、私の開発環境 (Windows 7 / Java 6) で証拠を受け取りました。常に絶対パスを考慮する必要があります (keytab がスペースなしでクラスパスによって参照されている場合でも)
于 2012-09-04T16:36:43.527 に答える
0

私はまったく同じ問題を抱えていました。

問題は「keyTabLocation」設定です。/WEB-INF/http-web.keytabに設定することはできません

ファイルパスまたはクラスパス上の何かに設定する必要があります。

たとえば、ファイルをクラスパスに配置し、次のように設定しました。

    <property name="keyTabLocation" value="classpath:http-web.keytab" />
于 2012-03-06T06:40:51.967 に答える