我有一个需要username and password authentication
才能进入的网络应用程序。
我正在做的是,通过独立Java app
对用户进行身份验证,这样做是通过使用Http
和username
向服务器发出password
请求来实现的。然后我会从服务器的响应中检索JSESSIONID
cookie。
现在我想要的是使用这个JSESSIONID
继续浏览器会话,即让user
导航我的网页应用程序的页面,这些页面将由我用于身份验证的独立Java应用程序打开
这可能吗?或者还有其他方法可以这样做。
答案 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库:
如果您不想使用第三方库,您也可以将servlet修改为IdM。无论哪种方式,我建议在决定解决方案之前先阅读一些关于安全断言标记语言(SAML)的内容。 SAML是上述库实现的一种流行方法。