Olá galera,
estou modificando uma parte do controle de acesso de uma aplicação. Estamos utilizando Jasypt, Acegi e Hibernate. Como já existiam senhas cadastradas anteriormente no banco, preciso fazê-las serem validadas corretamente. A idéia é setar todas as senhas do banco para o formato q o jasypt está validando. A parte da validação no meu securityContext.xml está assim:
<bean id="jasyptPasswordEncryptor" class="org.jasypt.util.password.StrongPasswordEncryptor" />
<bean id="passwordEncoder" class="org.jasypt.spring.security.PasswordEncoder">
<property name="passwordEncryptor">
<ref bean="jasyptPasswordEncryptor" />
</property>
</bean>
<!-- Dao da Autenticação -->
<bean id="daoAuthenticationProvider"
class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"
autowire="autodetect">
<property name="passwordEncoder"><ref bean="passwordEncoder"/></property>
</bean>
<bean id="strongEncryptor"
class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="algorithm">
<value>PBEWithMD5AndTripleDES</value>
</property>
<property name="password">
<value>jasypt</value>
</property>
</bean>
<bean id="hibernateStringEncryptor"
class="org.jasypt.hibernate.encryptor.HibernatePBEStringEncryptor">
<property name="registeredName">
<value>strongHibernateStringEncryptor</value>
</property>
<property name="encryptor">
<ref bean="strongEncryptor" />
</property>
</bean>
Bom, pra setar todas as senhas de uma forma q o jasypt entenda, eu preciso utilizar as classes diretamente (sem Spring). Tipo:
StandardPBEStringEncryptor strongEncryptor = new StandardPBEStringEncryptor();
HibernatePBEStringEncryptor encryptor = new HibernatePBEStringEncryptor();
strongEncryptor.setPassword("jasypt");
strongEncryptor.setAlgorithm("PBEWithMD5AndTripleDES");
encryptor.setEncryptor(strongEncryptor);
String str = encryptor.encrypt("1");
System.out.println(str);
Pego o código do output (é claro q isso é só porque estou testando =P), coloco manualmente no banco e tento logar. Não dá erro, oq confirma q o formato está decifrável pelo jasypt. Mas a senha é dada como inválida! Como se ele estivesse descriptando errado ou algo assim.
Qualquer ajuda é válida, porque já vai ajudando a pensar! =D
Vlw!