没有cookie的Spring Security Sessions
我试图在不利用cookie的情况下在Spring Security中管理会话。原因是-
我们的应用程序显示在另一个域的iframe中,我们需要管理应用程序中的会话,而Safari限制了跨域Cookie的创建。(上下文:domainA.com在iframe中显示domainB.com。domainB.com设置了JSESSIONID
cookie以利用domainB.com,但是由于用户的浏览器显示domainA.com-Safari限制了domainB.com创建cookie) 。
我想实现这一目标的唯一方法(针对OWASP安全建议)是将JSESSIONID包含在URL中作为GET参数。我不想这样做,但我想不出另一种选择。
所以这个问题都是关于:
- 有解决这个问题的更好的选择吗?
- 如果没有-我如何使用Spring Security实现这一目标
为此,使用enableSessionUrlRewriting查看Spring的文档,可以解决此问题。
所以我做到了:
@Overrideprotected void configure(HttpSecurity http) throws Exception {
http
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.ALWAYS)
.enableSessionUrlRewriting(true)
这没有将JSESSIONID添加到URL,但是现在应该允许它。然后,我利用在此问题中找到的一些代码来将“跟踪模式”设置为URL
@SpringBootApplicationpublic class MyApplication extends SpringBootServletInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext
.setSessionTrackingModes(
Collections.singleton(SessionTrackingMode.URL)
);
即使在此之后,应用程序仍将JSESSIONID添加为cookie而不是URL中。
有人可以帮我指出正确的方向吗?
回答:
您是否看过Spring Session:HttpSession&RestfulAPI,它使用HTTP标头而不是cookie。请参阅REST Sample中的REST示例项目。
以上是 没有cookie的Spring Security Sessions 的全部内容, 来源链接: utcz.com/qa/431084.html