Olá psevestre, eu habilitei a valve do Tomcat e funcionou o SSO. Agora todas as aplicações WEB são autorizadas depois de um único login. Obrigado pela dica.
Mas ainda estou com um problema. Quando eu vou chamar um EJB da camada WEB ele não passa para a chamada do EJB os dados de usuário e senha.
Pois o SSO só funciona para a parte WEB (Tomcat) para as chamadas de EJB não rola.
Properties propriedades = new Properties();
propriedades.put(Context.INITIAL_CONTEXT_FACTORY, Configuracao.getString("servidor.aplicacao.fabrica_contexto"));
propriedades.put(Context.PROVIDER_URL, Configuracao.getString("servidor.aplicacao.url"));
propriedades.put(Context.SECURITY_PRINCIPAL, "dgouvea");
propriedades.put(Context.SECURITY_CREDENTIALS, "******");
String nomeJndi = Configuracao.getString("servidor.aplicacao.jndi") + "/" + Configuracao.getString("servidor.aplicacao.ejb");
ctx = new InitialContext(propriedades);
Estou passando os dados mas ainda sim não funciona. A não ser quando no meu LoginModule do JAAS eu seto as informações no SecurityAssociation
SecurityAssociation.setPrincipal(principal);
SecurityAssociation.setCredential(senha);
Assim funciona! mas o SecurityAssociation trabalha com ThreadLocal e o LoginModule fica em uma Thread muito baixa do JBoss, sendo assim ao recuperar a infomação do SecurityAssociation eu sempre pego a do ultimo usuário que se logou no LoginModule, independente da sessão que estiver trabalhando.
Minhas perguntas são:
- Como passar as informações de usuário e senha na chamada do EJB?
- Como recuperar essas informações dentro do EJB?
Já estou alguns dias fazendo pesquisas na Internet e trabalhando em cima disso.
Agradeço a todos pela ajuda, toda sugestão é bem vinda.