考虑下面的场景
A.com/security是登录应用程序。一旦用户在此进行身份验证,他需要重定向到B.com/myapp应用程序。 B.com/myapp没有任何身份验证逻辑,但是它有一个sessionfilter,它会在会话中检查安全令牌,如果它不会重定向到A.com/security。
我已经研究过如何实现这一点并且开始了解单点登录将是最好的解决方案。
将SSO实施放在一边,以下逻辑可以正常工作。
用户在A.com/security中进行身份验证后,安全对象(用户名,角色,令牌..)将通过rest api call发送到B.com/myapp.now在B.com/myapp中我们创建了一个session并转储这些值并将sessionId作为响应返回。 A.com/security使用此sessionId并使用jsessionId将用户重定向到B.com/myapp。这种方法是否正确?
实施问题 - 如何重定向用户并为他分配已创建的会话。
我的尝试很少下面
不工作
@RequestMapping("home2/{sessionID}")
public void redirect(@PathVariable String sessionID,HttpServletResponse response) throws IOException{
response.setHeader("SET-COOKIE", "JSESSIONID=" + sessionID + "; Path=/myapp/; HttpOnly");
response.sendRedirect("http://B.com/myapp/home");
}
工作 - 但后续请求未连接到此会话(重定向回登录),不知道我在这里缺少什么
@RequestMapping("home2/{sessionID}")
public void redirect(@PathVariable String sessionID,HttpServletResponse response) throws IOException{
response.sendRedirect("http://B.com/myapp/home;jsessionid="+sessionID);
}