没有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的文档,可以解决此问题。

所以我做到了:

@Override

protected void configure(HttpSecurity http) throws Exception {

http

.sessionManagement()

.sessionCreationPolicy(SessionCreationPolicy.ALWAYS)

.enableSessionUrlRewriting(true)

这没有将JSESSIONID添加到URL,但是现在应该允许它。然后,我利用在此问题中找到的一些代码来将“跟踪模式”设置为URL

@SpringBootApplication

public 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

回到顶部