2014-12-06 108 views
0

我有一个web应用程序,需要输入username and password authentication使用JSESSIONID继续会话

我做什么,从一个独立的Java app,这将通过使Http要求使用usernamepassword服务器做验证用户。然后我会从服务器的响应中检索JSESSIONID Cookie。

现在我想要的是使用JSESSIONID在浏览器上继续会话,即让user导航我的web应用程序的页面,该应用程序将由我用于身份验证的独立java应用程序打开。

这可能吗?或者还有其他方式可以这么做。

回答

0

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

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

从您的应用程序,你可以发送JSESSIONID作为参数,同时打开浏览器首次使用上面无论是在过滤器或servlet方法重置您的Cookie。一旦你发送回应,这将重置你的cookie在客户端。下一次请求病房,您将能够访问先前创建的会话。

+0

当我访问我的网络应用程序时,我不发送请求只需浏览它。 – 2014-12-07 05:40:05

+0

由于您在浏览您的应用程序时没有任何细节,我们如何维护会话?认证后,您是从独立的应用程序打开浏览器? – 2014-12-07 06:03:10

+0

是的,这就是我想要做的。 – 2014-12-08 05:47:05

0

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

由于Web应用程序不共享会话,你要找的是一个单点登录(SSO)解决方案,其中涉及“身份提供者”(IDM),对一个或多个“服务的用户进行身份验证提供者“(SP)。在这种情况下,您的servlet是IdM,而您的Web应用程序是SP。

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

  • 的Kerberos
  • PicketLink(对于JBoss)
  • OpenAM(用于Tomcat)

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