Capturar senha do usuário num filtro

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.

[code]public class Filtro implements Filter {
// …

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

// ...

}[/code]

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!

Ele cai nesse filtro, antes ou depois de logar?

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).

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.

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.

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”.

[quote=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”.
[/quote]
legal!

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

ainda não testei porque consegui contornar o problema.