0

Web アプリケーションの Spring セキュリティを紹介します。まず、認証マネージャーを次のように設定します。

<authentication-manager>
    <authentication-provider>
        <password-encoder hash='md5'>
        </password-encoder> 
        <jdbc-user-service data-source-ref="dataSource"/>
    </authentication-provider>
</authentication-manager>

テストでは、ユーザー名とパスワードの両方に「1」を使用します。オンラインの md5 ハッシュ ジェネレーターを使用すると、md5(1) の「c4ca4238a0b923820dcc509a6f75849b」が得られました。ログインは、この構成で正常に機能します。ソルトを試してみたかったので、認証マネージャーを次のように変更します。

<authentication-manager>
    <authentication-provider>
        <password-encoder hash='md5'>
            <salt-source user-property="username"/>
        </password-encoder> 
        <jdbc-user-service data-source-ref="dataSource"/>
    </authentication-provider>
</authentication-manager>

だから私がウェブで読んだように、ソルトの使用方法はハッシュ(ソルト+パスワード)のようなものです。同じツールを使用して「11」をハッシュし、ハッシュ値「6512bd43d9caa6e02c990b0a82652dca」を取得しました。その値でデータベースを更新します。しかし、「Caused : Bad credentials」というエラーがスローされてログインに失敗するようになりました。これは、パスワードがデータベースと一致しなかったことを意味します。だから私の質問は、春が塩漬けに別の方法を使用するということですか?

4

2 に答える 2

2

PasswordEncoderスプリング セキュリティを使用しているため、 beanを使用することを考えることができます。

<beans:bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.ShaPasswordEncoder">
</beans:bean>

認証マネージャーは (change code ) のようになります:

<authentication-manager>
    <authentication-provider>
        <password-encoder ref="passwordEncoder">
            <salt-source user-property="username"/>
        <password-encoder/>
        <jdbc-user-service data-source-ref="dataSource"/>
    </authentication-provider>
 </authentication-manager>

詳細については、Spring Security カスタム認証とパスワード エンコーディング& Spring Security:DB および applicationContext でのパスワード エンコーディングにアクセスしてください。

于 2013-03-12T17:49:20.413 に答える
0

とにかくくそー春の塩漬け方法は違います。ユーザーがJavaコードに従って、ソルトを使用してハッシュを計算します。

public static void main(String[] args) {
    Md5PasswordEncoder md5 = new Md5PasswordEncoder();
    String hash = md5.encodePassword("1", "1");
    System.out.println(hash);
}

暗号化されたパスワードとして「6a8a1f634e38d30e87b450899b31f810」を取得しました(別の権利??)。次に、それをデータベースに挿入して、アプリケーションのログインを試みます。ヴォラ!!! ログインに成功しました。

于 2013-03-12T17:34:34.423 に答える