session de compartilhamento em aplicativos da web

Estou desenvolvendo um aplicativo da Web usando JSP e Servlets (Container: Tomcat7 , Database: Oracle10 )

Eu desenvolvi alguns aplicativos da web como Profile , Reports , Leads . Então eu desenvolvi um aplicativo de Login . Neste aplicativo, estou armazenando USERID em Session com mais alguns atributos de session.

Após o login do usuário, ele será mostrado menu que contém links para outros aplicativos, como links para o aplicativo de Profile .

Então, quando eu access a Session após o login do usuário:

  • Se eu tentar acessar a session com o mesmo aplicativo (Login), então recebo a session com todos os atributos necessários
  • Mas quando eu tento acessar a session de outros aplicativos como o Profiles então eu recebo a session como null

snippet de código para verificar a session (Filtro de Servlet no aplicativo da web de Logon)

 HttpSession session = request.getSession(false); if(session==null) { System.out.println("Session does not exist... Redirected to LOGIN Page."); response.sendRedirect("/ApplicationName/Login.jsp"); } 

Estou acessando session no aplicativo Profile para verificar se o usuário está logado ou não.

Então pesquisei e descobri que a Session não pode ser acessada de outros aplicativos por motivos de segurança (também descobri que isso pode ser feito definindo crossContext="true" )

Então eu encontrei outra opção como fazer EAR de todos os aplicativos e, em seguida, implantá-lo, mas infelizmente EAR não é suportado pelo Tomcat7 .

Eu sou novo no ambiente web, por isso, se alguém já trabalhou nisso antes, por favor, deixe-me saber quais podem ser as opções?

desde já, obrigado

Update1

Agora eu decidi usar o EAR , no qual vou empacotar todos os arquivos WAR e então vou tentar compartilhar a session entre eles. desde Tomcat não suporta EAR Eu instalei o Oracle Glassfish , Então eu criei Enterprise Application Project que contém dois aplicativos 1. Login e 2. Profiles , e, em seguida, criou o arquivo EAR , e implantado no Glassfish . Então, eu quero compartilhar a session entre esses dois aplicativos (no Glassfish), então se alguém tiver alguma idéia sobre isso, por favor, me avise. (link para qualquer tutorial também será apreciado)

A maneira como tenho visto isso na minha loja é colocar as credenciais de login em um cookie criptografado e instalar agentes (filtros java, mods de servidores web etc, na frente dos aplicativos que precisam dos dados do usuário) que descriptografam os cookies e passam ao longo dos dados para as aplicações a jusante. Não armazene informações de login na session HTTP se você quiser compartilhá-las entre os aplicativos.

Como apontado acima, o requisito de que você está falando é o Single Sign On (SSO). O SSO mais simples que você pode implementar é o seguinte:

  1. Após a autenticação bem-sucedida, adicione o cookie com o nome de usuário criptografado (você não precisa criptografar uma senha)
  2. Se você acessar qualquer aplicativo com o cookie de nome de usuário e tiver êxito para descriptografá-lo, isso significa que um usuário foi autenticado e você não deve mostrar a página de login.

Use AES-256 para a criptografia.