Não criptografa senha para autenticar no banco

O meu XML de configuração de acesso ao banco para abrir a aplicação está com a seguinte verificação de segurança:

<sec:authentication-manager>
        <sec:authentication-provider>
        <!-- <sec:password-encoder hash="md5" /> -->
            <sec:jdbc-user-service
                data-source-ref="dataSource"
                users-by-username-query="SELECT login as username, senha as password, 1 as enable FROM tabelaAcessoRPG where login=?;"
                authorities-by-username-query="SELECT login as username, 'MESTRE' as role FROM tabeloAcessoRPG where login=?;"/>
        </sec:authentication-provider>
    </sec:authentication-manager>

No banco, a senha (é criada por outro sistema) é criptografada.

Quando eu deixo a linha do password-encoder comentada, o login é feito com o resultado da criptografia da senha original (ao invés de usar a senha original, preciso colocar o hash dela).

Quando eu descomento a linha do password-encoder, o Tomcat não autentica.

O log de erro apresenta:

2021-07-01 21:33:47,488 DEBUG jdbc.datasource.DataSourceUtils  ----> Fetching JDBC Connection from DataSource
 2021-07-01 21:33:47,494 DEBUG jdbc.datasource.DataSourceUtils  ----> Returning JDBC Connection to DataSource
 2021-07-01 21:33:47,502 DEBUG authentication.dao.DaoAuthenticationProvider  ----> Authentication failed: password does not match stored value
 2021-07-01 21:33:47,503 DEBUG web.authentication.UsernamePasswordAuthenticationFilter  ----> Authentication request failed: org.springframework.security.authentication.BadCredentialsException: Usuário inexistente ou senha inválida
 2021-07-01 21:33:47,503 DEBUG web.authentication.UsernamePasswordAuthenticationFilter  ----> Updated SecurityContextHolder to contain null Authentication
 2021-07-01 21:33:47,503 DEBUG web.authentication.UsernamePasswordAuthenticationFilter  ----> Delegating to authentication failure handlerorg.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler@6d0d1b2c
 2021-07-01 21:33:47,503 DEBUG web.authentication.SimpleUrlAuthenticationFailureHandler  ----> Redirecting to /raiz/f/login.xhtml?fail
 2021-07-01 21:33:47,504 DEBUG security.web.DefaultRedirectStrategy  ----> Redirecting to '/raiz/f/login.xhtml?fail'

Alguém pode me orientar sobre como posso criptografar essa senha (MD5) de forma correta, para a autenticação funcionar?

Muito obrigado.

Na mensagem de erro está informando que o usuário ou a senha estão errados. Faça um teste para saber se a senha criptografada está correta. Uma sugestão seria ao iniciar, o sistema gerar a senha criptografada utilizando a senha original e exibi-la no console, pegue essa senha cadastre no banco de dados e habilite o password-encoder no xml e veja se autentica. Uma observação seria que as senhas criptografada certamente serão diferentes mas correspondentes a mesma senha original.

at.te

De certeza que é MD5? Pode ser outro algoritmo de hash

A tabela indicada aqui não está escrita erroneamente como “tabeloAcessoRPG” quando deveria ser “tabelaAcessoRPG”?

1 curtida

Obrigado, vou testar.
:+1:

Sim, mas pode estar mal escrito na arquitetura.
:face_with_monocle:

Mero erro de digitação ao adaptar do original pra cá.
:wink:

Lá nas configurações é só você marcar o checkbox de ocultar o perfil público!

1 curtida