Dificuldades com Jaas e instâncias de classe que implementa Principal

Senhores,

vejam a situação, criei um módulo Jaas que:

@Override public boolean login() throws LoginException { succeeded = false; getUsernamePassword(); Usuario usuario = UsuarioFabrica.getUsuarioByLogin(this.loginInformado, this.senhaInformado); if (usuario != null) { transacoes.addAll(usuario.getTransacoes()); succeeded = true; this.user = usuario; sharedState.put("javax.security.auth.principal", user); sharedState.put("javax.security.auth.roles", transacoes); // ...

Depois de logado na página principal eu tenho:

<% if( request.getUserPrincipal() != null && request.getUserPrincipal() instanceof br.ufpr.tads.saga.seguranca.Usuario) { br.ufpr.tads.saga.seguranca.Usuario usu = (br.ufpr.tads.saga.seguranca.Usuario)request.getUserPrincipal(); out.println(usu.getNome()); } else { out.println("usu&aacute;rio n&atilde;o identificado."); out.println(request.getUserPrincipal()); }

O problema ocorre nesse if… ele não entra no primeiro bloco… e vejam a saída no segundo bloco:

[quote]usuário não identificado. br.ufpr.tads.saga.seguranca.Usuario@57d7e64f
[/quote]

Ele não passa no teste obj instanceof classe e não ptermite fazer o cast, mas o toString retorna a informação correta?

Alguém tem alguma dica?

vw

É cara, nunca criei um validador que implementasse o JAAS.

Será que sua classe usuário não precisa implementar alguma interface ou método que ele necessita?

Outra coisa é, pq você apenas não colocar o usuário na sessão mesmo? Assim você poderia buscá-lo de modo normal.

Olá Jakefrog,

a camada JAAS é requisito para o sistema, não descobri uma forma de acessar qualquer coisa da requisição ou da sessão no módulo de segurança, de qualquer forma, deve ser alguma coisa em relação a segurança da VM, mas ainda não encontrei, veja os logs do tomcat:

[quote]Stacktrace:] with root cause
java.lang.ClassCastException: br.ufpr.tads.saga.seguranca.Usuario cannot be cast to br.ufpr.tads.saga.seguranca.Usuario
at org.apache.jsp.index_jsp._jspService(index_jsp.java:71)
[/quote]

Negrito meu (risos)…

Se alguém já passou por isso me avisem, estou começando a testar com outras versões da VM (jdk1.6.0_26) e do tomcat (7.0.21.0)…

vw

Olá,

eu ainda não consegui resolver o problema, mas encontrei uma forma de acessar os métodos…

java.security.Principal p = request.getUserPrincipal(); String nome = p.getClass().getMethod("getNome", null).invoke(p, null).toString();

Se achar outra solução eu posto aqui.

sds