Hash+Salt пароли с использованием управляемой контейнером аутентификации / авторизации
Я создал веб-приложение JSF, используя управляемую контейнером аутентификацию и авторизацию. Я определил ограничения безопасности, роли безопасности и конфигурацию входа в систему FORM; Я предоставил код ниже для того, как я определил все эти параметры. Все отлично работает; когда пользователь пытается получить доступ к "защищенным" веб-страницам, на которые ему предлагается войти, доступ предоставляется в случае успеха или отказывается в случае неудачи. Поскольку пароли хранятся в виде открытого текста, вход в систему функционально с использованием управляемой контейнером аутентификации работает нормально, когда пользователи также вводят простые текстовые пароли.
Как вы знаете, я не могу получить доступ / изменить / обработать пароли в виде простого текста, введенные пользователем с использованием метода аутентификации FORM. Но я хочу хешировать + солить мои пароли перед сохранением, но тогда вход в систему не будет работать, так как пользователи будут вводить простой текст, а в базе данных будет хешированный + соленый пароль. Есть ли способ сохранить управляемые контейнером функции аутентификации и авторизации и все еще пароли hash + salt, если нет, то как я могу это сделать? Поскольку проверка подлинности с помощью FORM не позволяет мне работать с паролем, введенным пользователем, я не могу хэшировать + солить, пока не будет выполнено сравнение с паролем, сохраненным в базе данных. Если есть книга или блог, который я могу прочитать, направьте меня. Я внимательно изучил всю сеть и не нашел ответа, который понял.
<security-constraint>
<web-resource-collection>
<web-resource-name>Administrator Area</web-resource-name>
<url-pattern>/faces/administrator/*</url-pattern>
<url-pattern>/administrator/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>ADMINISTRATOR</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>ADMINISTRATOR</role-name>
</security-role>
Конфигурация входа в систему выглядит следующим образом:
<login-config>
<auth-method>FORM</auth-method>
<realm-name>DataSourceRealm</realm-name>
<form-login-config>
<form-login-page>/faces/login.xhtml</form-login-page>
<form-error-page>/faces/login.xhtml</form-error-page>
</form-login-config>
</login-config>
Страница входа в систему выглядит следующим образом:
<form id="log_in_form" method="post" action="j_security_check">
User name: <input type="text" name="j_username"/>
Password: <input type="password" name="j_password"/>
<input type="submit" value="Login"/>
</form>