我在包含MD5(用戶名+密碼)的數據庫中有一個密碼字段。我將如何在Spring Security + JdbcAuthentication中實現這一點。我知道這是不安全的,但它是一個遺留數據庫,我必須與之交談。我目前的代碼是這樣的:Spring Boot Security 4自定義PasswordEncoder
auth.jdbcAuthentication()
.dataSource(dataSource)
.usersByUsernameQuery("select login, password, 1 as enabled from
login where login=?")
.authoritiesByUsernameQuery("select login,role" +
" from login lo" +
" join login_role lor on lo.login_id = lor.login_id" +
" join role gr on lor.role_id = gr.role_id" +
" where login=?")
如果我發送哈希值作爲密碼驗證工程。我想我將不得不配置一些密碼編碼器。
要爲Spring安全性使用盡可能多的默認基礎結構,您需要一個'SaltSource'來獲取用戶名以追加密碼。接下來你需要一個自定義的'MessageDigestPasswordEncoded'擴展來在密碼前添加salt(默認是'password {salt}'而不是你的方案。 –
我已經使用了hacky的方式並且重寫了請求參數ServletFilter。因此,用戶名+密碼作爲密碼傳遞給md5編碼器。有一些大小寫問題,但是SQL解決了這個問題。謝謝大家。 –