Dúvida sobre arquitetura e gerenciamento de WAR's

Pessoal,

Estou desenvolvendo um sistema de autenticação que tem por objetivo unificar a forma por onde as aplicações WEB se autenticam, hoje a realidade é a seguinte, tenho para cada projeto WAR um jar no lib com a classe de conexão e as regras de negócio referente ao login e ao projeto em si.

O sistema de login hoje se autentica no banco de dados da seguinte maneira: O login e senha do usuário corresponde ao login e senha no banco de dados pois as permissões são feitas a nível de GRANT nas tabelas, após se logar no banco é preciso executar uma procedure para verificar alguns status do usuário.

Estou criando um projeto WAR que tem por objetivo autenticar o usuário e transferir a sessão para outro WAR.

A minha dúvida é a seguinte: Estou com dificuldades para gerenciar essa autenticação e transferência da sessão do usuário para os outros WAR’s. Vocês me indicariam alguma arquitetura onde eu possa gerenciar meus projetos WAR e ter um único canal de autenticação?

Pensei em partir para um projeto EAR porem acredito que usar EJB é bem complexo pois os projetos WEB não tem interligação então eu não precisaria ter comunicação entre classes de projetos diferentes.

Hoje utilizo o JBOSS como servidor de aplicação.

Pensei na seguinte arquitetura:

Web service
– Login
autenticar(Usuario usuario);

– Projeto 1
metodo1(Param param, usuario autenticacao);

– Projeto 2
metodo2(Param param, usuario autenticacao);

Disponibilizar um WS com método que autentica o usuário.

Disponibilizar um WS para cada projeto e sempre passar a autenticação disponibilizada na sessão, porem chega onde estou com dúvida que é a transferência da sessão do serviço de autenticação para um outro projeto.

Criar uma aplicação WEB que consuma esse WS e se autentique no servidor e disponibilize essa sessão para outra aplicação WEB no mesmo servidor.

Arquitetura atual:

projeto1 (WAR)
–lib
-----regraNegocioProjeto1 (JAR)
-------oracleConnectionUtil (JAR)
-------classeLogin (JAR)

projeto2 (WAR)
–lib
-----regraNegocioProjeto2 (JAR)
-------oracleConnectionUtil (JAR)
-------classeLogin (JAR)

Quero mudar essa realidade urgente pois não consigo trabalhar sem reuso de código.

De antemão agradeço a ajuda de vocês e desculpem o texto extenso.

Atenciosamente,

Boa Tarde,

Acho que você poderia resolver isto com Single Sign-On.

Juliano,

Você já utilizou em algum projeto?

Atenciosamente,

Para isso vc pode usar o JAAS vc pode pegar as informações do usuário de várias formas:
Fazer com que todos as aplicações peguem essas informações de um mesmo banco ou de um webservice, por exemplo.]

[quote=yelken]Juliano,

Você já utilizou em algum projeto?

Atenciosamente,[/quote]

Bom dia,

Já utilizei, tinha várias aplicações(.WAR) rodando no Tomcat.

Caso o usuário já estivesse logado em uma das aplicações, não era necessário logar nas outras.

Juliano,

Andei dando uma lida sobre o Single sign-on e achei muito interessante, vou dar uma analisada na curva de aprendizagem e se vale a pena investir tempo implementando pois o projeto tem uma maneira de se autenticar utilizando criptografia própria e regras de negócio especificas, é uma forma de autenticação bem diferente das tradicionais.

Agradeço sua ajuda e em breve posto aqui como ficou a nova arquitetura.

Atenciosamente,