Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Acegi, испльзование хешей паролей


Автор: makados 16.2.2008, 02:37
В приложении используется Spring, и секьюрити сделано с помощью Acegi. Как сделать логин пользователя, разобрался. Хочу испльзовать хеширование паролей с зависимым от пользователя ключевым словом (salt). Поэтому при регистрации пользователя вручную, с помощью бина passwordEncoder хеширую пароль по e-mail пользователя.

Выдержка из объявления енкодера пароля:
Код

    <bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.Md5PasswordEncoder"/>

    <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
        <property name="userDetailsService" ref="usersDao"/>
        <property name="passwordEncoder" ref="passwordEncoder">
        </property>
        <property name="saltSource">
            <bean class="org.acegisecurity.providers.dao.salt.ReflectionSaltSource">
                <property name="userPropertyToUse" value="email"/>
            </bean>
        </property>
    </bean>


Код

       String encodedPassword = passwordEncoder.encodePassword(user.getPassword(), user.getEmail());
        user.setPassword(encodedPassword);
        getHibernateTemplate().saveOrUpdate(user);


С использованием данного подхода залогиниться не удается. Но при использовании общего для всех пользователей salt все работает отлично. Почему может не работать уникальный для пользователя salt?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)