我想設置彈簧安全3來驗證用戶對我的hibernate 3數據庫。我只在數據庫中存儲密碼的sha1哈希(不是純文本)。春季安全數據庫身份驗證瓦特/休眠和哈希密碼?
我看過this和this,它告訴我實現我自己的UserDetailsService。不幸的是,loadUserByUsername吐出的UserDetails似乎需要明文密碼,這是我沒有的。
這是如何處理的?春季安全實際上可以做我需要的嗎?我錯過了什麼嗎?
我想設置彈簧安全3來驗證用戶對我的hibernate 3數據庫。我只在數據庫中存儲密碼的sha1哈希(不是純文本)。春季安全數據庫身份驗證瓦特/休眠和哈希密碼?
我看過this和this,它告訴我實現我自己的UserDetailsService。不幸的是,loadUserByUsername吐出的UserDetails似乎需要明文密碼,這是我沒有的。
這是如何處理的?春季安全實際上可以做我需要的嗎?我錯過了什麼嗎?
當您設置UserDetailsService時,spring會使用它來加載用戶,然後將它們與登錄信息進行比較。這意味着它會比較密碼。 但是,您可以配置一個密碼編碼器:Doc: Adding a Password Encoder
,或者你只是寫自己的AuthenticationManager or AuthenticationProvider它加載用戶,並決定,如果用戶成功登錄了。只是實現的接口 的AuthenticationProvider和設置配置
<authentication-manager>
<authentication-provider ref="myAuthenticationProvider"/>
</authentication-manager>
<bean id="myAuthenticationProvider"
class="stackoverflow.SuperduperMegaAuthenticationProvider">
</bean>
Normaly的是UserDetails包含一個哈希密碼,你只需要配置Spring Security使用正確的password encoder用它來驗證。
<password-encoder hash="md5"/>
尋找在堆棧溢出回答上面的密碼編碼器線@Spring Security 3 database authentication with Hibernate。
在你的情況下,你應該替換這一行:
<password-encoder hash="sha"/>