Web services 无法从会话中获取对象

Web services 无法从会话中获取对象,web-services,spring-security,restful-authentication,jsessionid,Web Services,Spring Security,Restful Authentication,Jsessionid,我有以下情况: 我访问一个web应用程序——它利用spring安全性,在会话中创建一个对象,比如说一个包含一些条目的购物车 我使用restful客户端访问应用程序。我有:user、password、JSESSIONID cookie及其相应的值。两者都使用基本身份验证 结果如何?我得到了这个东西——这个箱子上的购物车——但它是空的。它没有添加的条目。这几乎就像——尽管我能够成功地进行身份验证,但有一种机制可以创建对象的新实例,而不是给我现有的实例 你知道spring security不允许这种情

我有以下情况:

  • 我访问一个web应用程序——它利用spring安全性,在会话中创建一个对象,比如说一个包含一些条目的购物车
  • 我使用restful客户端访问应用程序。我有:user、password、JSESSIONID cookie及其相应的值。两者都使用基本身份验证
  • 结果如何?我得到了这个东西——这个箱子上的购物车——但它是空的。它没有添加的条目。这几乎就像——尽管我能够成功地进行身份验证,但有一种机制可以创建对象的新实例,而不是给我现有的实例

    你知道spring security不允许这种情况发生吗

    我还注意到。。。我发送Cookie JSESSIONID=Number,当它响应时,它会给我一个不同的JSESSIONID号,我的假设是,即使我有wright凭据,它允许我登录,但它不允许我使用相同的会话,它只是创建一个新会话,我的购物车在那里是空的


    任何帮助都将不胜感激

    SpringSecurity在身份验证后替换JSESSIONID cookie(强烈建议不要禁用该功能以防止会话固定攻击)。 以下配置启用该功能

    <http ...>
        ...
        <session-management session-fixation-protection="migrateSession" />
    </http>
    
    
    ...
    
    要复制现有会话属性,请使用
    migrateSession

    根据文档显示的属性值:

    • migrateSession—创建新会话并将现有会话属性复制到新会话。这是默认设置
    • 没有-什么都不要做。原会期将予保留
    • newSession—创建新的“干净”会话,而不复制现有会话数据

    Spring在身份验证上创建一个新会话。这称为会话固定保护。请在此处阅读更多信息:


    非常感谢你,凯文。我已经通过以下操作移除了保护:下面是我正在做的:1.-访问web应用程序,2.-获取JSESSIONID cookie的值,3.-使用RESTFul客户端访问,使用相同的凭据、身份验证(基本),然后我发送JSESSIONID cookie,其中包含我在2处获得的值。但是,尽管我可以进行身份验证,但它始终会创建一个新会话,因此我的购物车返回为空。有没有办法克服这个问题?再次感谢你的帮助!你能分享你的spring安全配置吗?你确定你发送了相同的cookie吗?请使用Fiddler确保发送相同的JSessionId。您是否看到下面的答案?这有帮助吗?非常感谢你的评论,迈克尔!我目前正在测试Fiddler,我会让你知道它是如何运行的。