Galera, estou com um problema e preciso da ajuda de vocês. Tentei achar aqui no fórum, porém apenas vi coisas incompletas.
Estou precisando apenas fazer uma autenticação com um banco de dados, porém teria que realizar essa autenticação fora do xml.
para isso eu preciso setar um bean<authentication-manager>
<authentication-provider>
<password-encoder ref="passwordEncoder" />
<jdbc-user-service data-source-ref="conexao"
users-by-username-query="SELECT ID as username, SENHA as password, 'true' as enable FROM DCT_PROD_TDM.T047_USUARIOS_APLICACAO WHERE ID = ?"
authorities-by-username-query="SELECT ID as username, 'ROLE_USER' as authority FROM DCT_PROD_TDM.T047_USUARIOS_APLICACAO WHERE ID = ?" />
</authentication-provider>
</authentication-manager>
<beans:bean id="passwordEncoder" class="com.accenture.security.TrataSenha"/>
<beans:bean name="conexao"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="com.teradata.jdbc.TeraDriver" />
<beans:property name="url" value="jdbc:teradata://10.32.203.64/CHARSET=UTF8" />
<beans:property name="username" value="DCT_APP_USER" />
<beans:property name="password" value="telemar" />
</beans:bean>
</beans:beans>
ai indo pra classe eu tenho que implementar PasswordEncoder correto?
public class TratarSenha implements PasswordEncoder{
@Override
public String encodePassword(String senha, Object arg1) {
MessageDigest md = null;
String senhaHash = null;
try {
md = MessageDigest.getInstance("MD5");
byte[] senhaBytes = senha.getBytes("UTF-16LE");
byte[] hash = md.digest(senhaBytes);
senhaHash = Util.encodeBase64(hash);
} catch (Exception e) {
e.printStackTrace();
}
return senhaHash;
}
@Override
public boolean isPasswordValid(String encPass, String rawPass, Object arg2) {
// TODO Auto-generated method stub
return false;
}
a minha dúvida é como preencher esse método isPasswordValid (ele é booleando, ou seja, ele vai validar se o encodePassword é valido, correto? porém não sei como)
outra dúvida é eu apenas preciso isso para pegar uma senha criptografada do meu banco e autenticar, isso já irá realizar essa tarefa?
o spring automaticamente vai vir nessa minha classe e fazer o tratamento a partir da senha q eu colocar no formulário para logar no sistema?
Att,
Francisco Amaral