4

このフォーラムとドキュメントを確認しましたが、この質問に対する回答が見つかりませんでした。つまり、基本的な Java オブジェクトを MD5 エンコーディングのソルトとして使用して基本的な Spring Security 構成をセットアップするにはどうすればよいですか?

これが私のSpring Securityコンテキストスニペット構成です:

  <beans:bean id="saltSource" class="com.myproject.sec.util.MyString" scope="singleton" >
      <beans:constructor-arg value="12345" />
  </beans:bean>

  <authentication-manager alias="authenticationManager">
    <authentication-provider user-service-ref="userService">
        <password-encoder hash="md5">
            <salt-source ref="saltSource" />
        </password-encoder>
    </authentication-provider> 
  </authentication-manager>

...しかし、この構成は、Salt ソースが org.springframework.security.authentication.dao.SaltSource インターフェイスのものではないことを訴える不要なエラー Exception をスローしますが、ユーザーの詳細のプロパティを自分のソルトとして使用したくありません (このように)インターフェイスはユーザーの詳細をサポートしています) ではなく、上記のように私のカスタム文字列オブジェクトです。どうすればこれを達成できますか?

また、密接に関連する2番目の質問として、次のようにSaltをユーザー名として取得できることを知っています。

  <authentication-manager alias="authenticationManager">
    <authentication-provider user-service-ref="userService">
        <password-encoder hash="md5">
            <salt-source user-property="username"/>
        </password-encoder>
    </authentication-provider> 
  </authentication-manager>

そして、次のように「12345」のシステム全体の固定Saltを持っています:

  <authentication-manager alias="authenticationManager">
    <authentication-provider user-service-ref="userService">
        <password-encoder hash="md5">
            <salt-source system-wide="12345"/>
        </password-encoder>
    </authentication-provider> 
  </authentication-manager>

...しかし、ユーザー名とシステム全体の定数「12345」の両方の連結としてソルトを取得するにはどうすればよいですか。エンコーディング?

4

3 に答える 3

0

spring security が提供する StandardPasswordEncoder を使用することをお勧めします。自動的に塩漬けを処理します。また、はるかに強力な SHA256 ハッシュも使用します。

http://docs.spring.io/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/crypto/password/StandardPasswordEncoder.html

<beans:bean id="passwordEncoder" class="org.springframework.security.crypto.password.StandardPasswordEncoder" />

<authentication-manager alias="authenticationManager">
    <authentication-provider user-service-ref="userService">
        <password-encoder ref="passwordEncoder" />   
    </authentication-provider>
</authentication-manager>
于 2013-10-03T18:03:39.017 に答える