У меня есть поле пароля в базе данных, содержащей MD5 (имя пользователя + пароль). Как реализовать это в Spring Security + JdbcAuthentication. Я знаю, что это не безопасно никакими средствами, но это устаревшая база данных, с которой я должен поговорить. Мой текущий код выглядит так:Spring Boot Security 4 custom 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' для получения' username' для добавления пароля. Затем вам понадобится настраиваемое расширение для MessageDigestPasswordEncoded для добавления соли перед паролем (по умолчанию используется 'password {salt}' вместо вашей схемы. –
Я пошел с хакерским способом и переписал параметры запроса в ServletFilter. Следовательно, имя пользователя + пароль передается как Пароль в кодер md5. Были некоторые проблемы с верхним или нижним регистром, но SQL решил это. Спасибо всем. –