gpt4 book ai didi

java - 使用不同时区的 UsernameToken 时间戳进行 WS-Secured header 验证 (WSS4j) 时出错

转载 作者:行者123 更新时间:2023-12-01 12:45:51 27 4
gpt4 key购买 nike

我已经使用带有 UsernameToken Timestamp 功能的 WSS4J 在 Apache CXF (2.7.11) 中构建了一个 Web 服务(基于自上而下)。当我使用 SOAP UI 进行相同测试时,服务器和客户端代码似乎工作正常。

但是有一个客户端代码在 WS Security header 中以 IST(印度标准时间)时区发送数据;为此,客户端收到错误消息已过期(WSSecurityEngine:无效的时间戳消息的安全语义已过期)正在抛出。经过调查,我发现 WSS4J 使用的时区是 UTC。在 WSS4JInterceptor 中将 timestampStrict 设置为 false 也不起作用。任何帮助将不胜感激。

<jaxws:inInterceptors>                  
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor" />
<bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
<property name="properties">
<map>
<entry key="action" value="UsernameToken Timestamp" />
<entry key="timestampStrict" value="false"/>
<entry key="user" value="test_user" />
<entry key="passwordType" value="PasswordText" />
<entry>
<key>
<value>passwordCallbackRef</value>
</key>
<ref bean="passwordCallback" />
</entry>
</map>
</property>
</bean>
</jaxws:inInterceptors>

最佳答案

根据 SOAP 消息安全配置文件,在 UTC 时间以外的任何时间发送时间戳都是无效的:“所有引用必须采用 UTC 时间。”。

科尔姆。

关于java - 使用不同时区的 UsernameToken 时间戳进行 WS-Secured header 验证 (WSS4j) 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24715328/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com