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:
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:
Use AES-256 para a criptografia.