У вас есть config (applicationContext-security.xml):
<authentication-manager alias="authenticationManager">
<authentication-provider>
<password-encoder hash="sha"/>
<jdbc-user-service data-source-ref="dataSource"/>
</authentication-provider>
</authentication-manager>
с другой стороны имеют SQL-запросы из моего dataSource
(это JdbcDaoImpl):
...
public static final String DEF_USERS_BY_USERNAME_QUERY =
"select username,password,enabled " +
"from users " +
"where username = ?";
...
В этом коде есть слово о sha
, поэтому пароль, выбранный из стандартной таблицы Spring Security users
, не закодирован.
Возможно, я должен указать атрибут sha
для столбца password
в моей конфигурации сопоставления hibernate:
<class name="model.UserDetails" table="users">
<id name="id">
<generator class="increment"/>
</id>
<property name="username" column="username"/>
<property name="password" column="password"/>
<property name="enabled" column="enabled"/>
<property name="mail" column="mail"/>
<property name="city" column="city"/>
<property name="confirmed" column="confirmed"/>
<property name="confirmationCode" column="confirmation_code"/>
<set name="authorities" cascade="all" inverse="true">
<key column="id" not-null="true"/>
<one-to-many class="model.Authority"/>
</set>
</class>
Теперь пароль сохраняется в DB как есть, но должен быть закодирован.
Как настроить applicationContext
конфигурационные и DB-запросы на одно и то же кодирование пароля?