Validação senha - Jasypt, Acegi e Hibernate

0 respostas
Tiago_Farias

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!

Criado 20 de maio de 2009
Respostas 0
Participantes 1