当前位置: 首页 > 面试题库 >

没有cookie的Spring Security Sessions

马星阑
2023-03-14
问题内容

我试图在不利用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示例项目。



 类似资料:
  • 问题内容: 有没有一种方法可以在PHP中启动持久性会话而无需放置会话cookie?是否还有其他方法可以跨页面维护会话,例如基于IP地址的解决方案? 我问的原因是,尽管大多数用户都启用了cookie,但我想看看是否有一种方法可以使禁用它的用户使用登录系统(即使我个人认为禁用cookie只是不必要的偏执狂)。 问题答案: 我认为要求您的用户启用Cookie并不过分。当人们完全关闭它们时,我觉得很愚蠢。

  • 本文向大家介绍如何设置没有有效期的JavaScript Cookie?,包括了如何设置没有有效期的JavaScript Cookie?的使用技巧和注意事项,需要的朋友参考一下 JavaScript cookie中的expires选项是可选的。“ expires”属性是可选的。如果为该属性提供有效的日期或时间,则cookie将在给定的日期或时间到期,此后,将无法访问cookie的值。 示例 要设置没

  • 问题内容: 为什么如果我在www.example.com上创建cookie并在example.com上进行检查,为什么该cookie不存在?我打算只使用将非www重定向到www域。但是我该如何解决呢? 问题答案: 浏览器是这里的罪魁祸首,而不是PHP。它们按域存储,不知道这是特例。从他们的角度,并有不同的字符串,因此具有不同的安全策略。但是,您可以做一些事情。 设置cookie时,请使用(带前导点

  • 问题内容: 我正在尝试制作一个支持cookie的URLConnection。根据文档,我可以使用: 我无法使此代码正常工作,然后我看到这仅适用于API 9(2.3)。但是,在较旧的模拟器中使用CookieManager不会出现错误,CookieManager存在,但是无法构造。有什么方法可以使此版本适用于早期版本?我试过了: 但这不起作用。 问题答案: 我能够使用Ian Brown的CookieM

  • 你好, 堆栈溢出的第一个帖子;) 我只是想了解一下清漆的制作过程。我还没有在网上找到我的问题的答案。 我有一个Drupal7网站,在开发中,它使用了清漆(v4),一切都很好。现在Drupal站点不生成cookie。 该网站将允许每个匿名用户管理一个“需求”(涉及多个页面),然后将该需求的内容发送到我们的后台办公室。没有针对匿名用户的用户管理或帐户管理。为了提高性能,我安装了清漆,但这是我第一次使用

  • 问题内容: 在阅读了Internet中的文档和帖子后,我仍然无法 使用jMeter中的Cookie Manager 解决问题。我在响应标头中获得了sid ID,但未将其 存储在cookie管理器中。以下是我的测试计划和 connect.sid响应的屏幕 您能帮忙弄清楚出什么问题吗? 问题答案: 为了由JMeter(以及Web浏览器)进行处理,您的Cookie必须符合某些政策,即域和路径不应与当前U