使用JSESSIONID继续进行会话

时间:2014-12-06 10:08:33

标签: java httpsession jsessionid

我有一个需要username and password authentication才能进入的网络应用程序。

我正在做的是,通过独立Java app对用户进行身份验证,这样做是通过使用Httpusername向服务器发出password请求来实现的。然后我会从服务器的响应中检索JSESSIONID cookie。

现在我想要的是使用这个JSESSIONID继续浏览器会话,即让user导航我的网页应用程序的页面,这些页面将由我用于身份验证的独立Java应用程序打开

这可能吗?或者还有其他方法可以这样做。

2 个答案:

答案 0 :(得分:0)

可以使用下面提到的方法更改Cookie。

        Cookie cookie = new Cookie("JSESSIONID", NEWSESSIONID);
        response.addCookie(cookie); 

从您的应用程序中,您可以在第一次打开浏览器时发送JSESSIONID作为参数,并使用上面的方法在filter或servlet中重置您的cookie。一旦您发回响应,这将在客户端重置您的cookie。在病房的下一个请求,您将能够访问先前创建的会话。

答案 1 :(得分:0)

这是可能的但不是那么简单。

由于Web应用程序不共享会话,因此您需要的是单点登录(SSO)解决方案,该解决方案涉及对用户进行身份验证的“身份提供商”(IdM)或更多“服务提供商”(SP)。在这种情况下,您的servlet是IdM,您的Web应用程序是SP。

根据您的部署,以下是您可以使用的第三方开源SSO库:

  • 的Kerberos
  • PicketLink(适用于JBOSS)
  • OpenAM(针对Tomcat)

如果您不想使用第三方库,您也可以将servlet修改为IdM。无论哪种方式,我建议在决定解决方案之前先阅读一些关于安全断言标记语言(SAML)的内容。 SAML是上述库实现的一种流行方法。