【问题标题】:How to prevent jboss node name from being added to sessionid如何防止将jboss节点名称添加到sessionid
【发布时间】:2019-05-09 06:32:30
【问题描述】:

最近,我们将应用服务器从 JBoss EAP6.2 升级到了 EAP7.0。

即使它运行非 HA 配置文件又名 standalone.xml,JBoss 在 JSESSIONID cookie 的末尾添加了 jboss.node.name

例如,

Spring Boot 生成JSESSIONIDtHSf9v23SSDBMqJ1O7XFJZ9....,当请求到达浏览器时,cookie 变为tHSf9v23SSDBMqJ1O7XFJZ9.master:<jboss.node.name>,这会导致一些兼容性问题。

我通过手动调用response.addCookie 进行了一些实验。在这种情况下,它不会在 cookie 中添加 master 后缀。但是,如果 Spring 自己写入 cookie,则似乎 JBoss 将其拾取并添加 master 后缀。我知道这个案例可能有点令人困惑(对我来说),我很乐意提供更多信息。

【问题讨论】:

  • 它的默认行为,我认为它不可能改变。
  • 我知道它是默认的,但我觉得应该有一些方法来覆盖这种行为
  • 您是否尝试过从<subsystem xmlns="urn:jboss:domain:undertow:3.1" instance-id="node2"> 中删除instance-id 属性
  • 也许你在这里找到有用的东西developer.jboss.org/thread/276894
  • 看来你不是唯一面临这个问题的人...developer.jboss.org/thread/171103?_sscc=t

标签: java spring-boot jboss wildfly jsessionid


【解决方案1】:

一个旧线程,但对于那些仍然偶然发现它的人:

在 EAP7/Wildfly11+ 中,会话 cookie 将具有以下形式的值:

<sessionId>.<instanceId>

instanceId 取自 Undertow 子系统配置属性 instance-id。默认情况下,它将在独立模式下设置为 jboss.node.name 系统属性的值,在域模式下设置为 &lt;serverGroup&gt;:&lt;hostname&gt;

您可以通过 Undertow 子系统配置自定义 instanceId 值: 通过standalone.xml:

 <subsystem xmlns="urn:jboss:domain:undertow:3.1" instance-id="${myValue}">

或者通过相应的cli:

/subsystem=undertow:write-attribute(name=instance-id, value=myvalue)

在这种情况下,你会得到一个看起来像这样的最终 JSession id:

JSESSIONID=FdEyt_nZvyAV1gKpQ_3ZsSYeu41JycphvMdHcYeT.myvalue

【讨论】:

    猜你喜欢
    • 2014-08-31
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    相关资源
    最近更新 更多