Capturar senha do usuário num filtro

6 respostas
wbdsjunior

bom dia pessoal!

há algum tempo, numa aplicação simples, por exigência do cliente, a autênticação do usuário foi configurada para ser feita pelo servidor de aplicação WebSphere.

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Intranet</realm-name>
</login-config>

então criaram um filtro que captura o nome de usuário e o coloca na sessão.

public class Filtro implements Filter {
    // ...

    HttpSession sessao = ((HttpServletRequest) request).getSession(true);
    String usuario = ((HttpServletRequest) request).getRemoteUser();
    sessao.setAttribute("usuario", usuario);

    // ...
}

mas hoje preciso das permissões dele, e me foi disponibilizada uma API (proprietária) que faz a validação do usuário (por nome de usuário e senha) e retorna essas permissões.

alguém sabe como faço para pegar a senha do usuário neste filtro?

ah! não tenho acesso a sites de busca para fazer uma pesquisa. maldita whitelist!

6 Respostas

Hebert_Coelho

Ele cai nesse filtro, antes ou depois de logar?

wbdsjunior

depois dele (o usuário) digitar o nome de usuário e senha e clicar OK.

é aquele popup do navegador, igual quando você acessa o Tomcat Manager (http://server:8080/manager/html).

Hebert_Coelho

Eu sei que você pode pegar o login do usuário através do comando SecurityAssociation.getPrincipal().getName();.

Com isso, você pode ir ao DB e fazer a consulta para buscar os dados dos usuários.

Eu imagino que seja desse modo pois com JAAS que também é um método de login JEE é feito assim.

wbdsjunior

o nome de usuário (login) até consigo pegar o com o camando ((HttpServletRequest) request).getRemoteUser();.

o problema é que não tenho acesso ao banco de dados. o acesso é feito pela API que que deram. esta API acessa um programa mainframe. nem sei se estas informações estam num banco de dados relacional.

E

Pelo que imagino (mas não testei), dá para você pegar o http request, pegar o valor do cabeçalho “Authorization:” e ver se ele começa por “Basic”. Se começar, o valor em Base64 contém o usuário e senha em base-64.
No exemplo mostrado nessa página da Wikipedia (o valor em base-64 é “QWxhZGRpbjpvcGVuIHNlc2FtZQ==”), o resultado esperado é “Aladdin:open sesame”, ou seja, o usuário é “Aladdin” e a senha “open sesame”.

wbdsjunior

entanglement:
http://en.wikipedia.org/wiki/Basic_access_authentication

Pelo que imagino (mas não testei), dá para você pegar o http request, pegar o valor do cabeçalho “Authorization:” e ver se ele começa por “Basic”. Se começar, o valor em Base64 contém o usuário e senha em base-64.
No exemplo mostrado nessa página da Wikipedia (o valor em base-64 é “QWxhZGRpbjpvcGVuIHNlc2FtZQ==”), o resultado esperado é “Aladdin:open sesame”, ou seja, o usuário é “Aladdin” e a senha “open sesame”.


legal!

achei uns exemplos aqui, mas ainda não tive tempo para testar.

ainda não testei porque consegui contornar o problema.

Criado 6 de dezembro de 2011
Ultima resposta 8 de dez. de 2011
Respostas 6
Participantes 3