Spring Security e MD5

4 respostas
E

Pessoal boa tarde, estou tentando implementa senhas criptografadas na minha aplicação.
Consigo criptografar as senhas, mas estou tendo problemas com o Spring Security, ele não realiza o
login, informando que a senha e inválida.

O que está faltando ???

Classe para criptografia.
import org.springframework.security.authentication.encoding.Md5PasswordEncoder;
import org.springframework.security.authentication.encoding.PasswordEncoder;

public class EncriptarMD5 {
	public static String encriptar(String senha) {
		PasswordEncoder encoder = new Md5PasswordEncoder();
		senha = encoder.encodePassword(senha, null);
		return senha;
	}
}
Quando salvo o usuário.
public String salvar() {

		this.usuario.setUser_tema("afternoon");
		
		String senha  = EncriptarMD5.encriptar(usuario.getUser_senha());
		usuario.setUser_senha(senha);
		UsuarioRN usuarioRN = new UsuarioRN();
		usuarioRN.salvar(this.usuario);

		usuario = new Usuario();
		return "/admin/principalAdmin";
	}
ApplicationContext-security
<authentication-manager>
		<authentication-provider>
			<password-encoder hash="md5" />
			<jdbc-user-service data-source-ref="omissoesDataSource"
				authorities-by-username-query="SELECT u.user_login, p.permissao 
											 FROM usuario u, usuario_permissao p 
											WHERE u.user_codigo = p.usuario 
											  AND u.user_login = ?"
				users-by-username-query="SELECT user_login, user_senha, estado_ativo 
									   FROM usuario 
									  WHERE user_login = ?" />
		</authentication-provider>
	</authentication-manager>
tela de login
<h:panelGroup rendered="#{!empty param.login_error}">
				<h:outputText value="Login e Senha não Confere !!!"
					style="color: red;font-size:22px;" />
				<br />
			</h:panelGroup>

			<form id="login" method="post"
				action="#{request.contextPath}/j_spring_security_check">
				<center>
					<p:panelGrid columns="2">
						<f:facet name="header">.: Digite os dados :.</f:facet>
						<h:outputLabel for="j_username" value="Login" />
						<h:inputText id="j_username" required="true" />

						<h:outputLabel for="j_password" value="Senha" />
						<h:inputSecret id="j_password" required="true" />

						<h:outputLabel />
						<h:commandButton type="submit" value="Login" />
					</p:panelGrid>
				</center>
			</form>

Senha cadastrada no B.D atraves de um insert manual para teste : senha: 123 --> senha criptografada : 202cb962ac59075b964b07152d234b70
ex : INSERT INTO usuario VALUES (3,'true','[email removido]','admin','Administrador',md5('123'),'bluesky')

Obs: Sem a criptografia consigo realizar o login normalmente, não apresenta nenhum erro.

Se puderem me ajudar, ficarei agradecido...

4 Respostas

K

users-by-username-query="SELECT user_login, user_senha, estado_ativo FROM usuario WHERE user_login = ?" />

faça o teste assim

users-by-username-query="SELECT user_login, user_senha, estado_ativo [b]as ativo [/b] FROM usuario WHERE user_login = ?" />

e aliás como esta sua estrutura no banco da table de usuario e papel?

E

Olá amigo, obrigado pela atenção, mas não adiantou colocar o " as " .
Realmente o Spring Security não consegue associar os valores de senha.
Se tiver alguma outra idéia.

minha tabela Usuário:

user_codigo integer NOT NULL,
estado_ativo boolean NOT NULL,
user_email character varying(255),
user_login character varying(255),
user_nome character varying(255),
user_senha character varying(255),
user_tema character varying(255),
CONSTRAINT usuario_pkey PRIMARY KEY (user_codigo),
CONSTRAINT usuario_user_login_key UNIQUE (user_login)

E

Opa… boa tarde galera…

Realizando a criptografia atraves da classe PasswordEncoder do próprio Spring Security e inserindo o registro com o Hibernate,
estou conseguindo salvar a senha criptografada e realizando o login normalmente.
Se eu faço a inserção manualmente no banco o spring security não consegue relacionar as senhas.
Está resolvido , agora não me perguntem o pq disso ocorrer ??? kkkk

Obrigado a todos que me ajuadaram.

A

E ai Blz,!!

Da uma conferida no link abaixo que considero que possa te ajudar.
http://www.javaparaweb.com.br/blog/?p=112

Criado 6 de maio de 2013
Ultima resposta 7 de mai. de 2013
Respostas 4
Participantes 3