0

我已设置用户名令牌 web 服务安全性并将此应用程序部署在 Websphere 7.0 应用服务器上。我已将以下属性设置为 false:

com.ibm.wsspi.wssecurity.token.username.verifyNonce false com.ibm.wsspi.wssecurity.token.username.verifyTimestamp false

即使设置了上述属性,客户端也会收到以下错误消息:

security.wssecurity.WSSContextImpl.s02: com.ibm.websphere.security.WSSecurityException: 异常 org.apache.axis2.AxisFault: CWWSS5208E: 时间戳值出现得太远了。运行时发生的动作:

有人可以帮我摆脱这个错误吗?

是否可以为允许的允许时间差设置任何属性?或者是否可以在 web 服务绑定中设置任何属性来消除此错误?

谢谢, 吉里什

4

1 回答 1

0

由于您已关闭 verifyTimestamp 和 verifyNonce,因此此错误可能来自 Timestamp 元素。您的安全标头中有时间戳吗?我认为如果错误是针对 UsernameToken 中的 Created,您会收到此错误:

CWWSS5209E: nonce 的时间戳记值(随机生成的值)出现得太远了。

默认时钟偏差为 3 分钟。如果您需要更长的时间,可以在 ws-security 绑定中使用此自定义属性进行设置:

com.ibm.wsspi.wssecurity.core.TimestampClockSkew

该值以秒为单位。你在这里设置:

(打开您的绑定)> WS-Security > 自定义属性

由于它是入站自定义属性,您可以将其放在“入站自定义属性”或“入站和出站自定义属性”下

UsernameToken Created 的 clockskew 的属性是 com.ibm.ws.wssecurity.config.token.BasicAuth.Nonce.clockSkew 并且在上述通用定制属性中进行配置。

如前所述,最好的办法是同步您的时钟。我理解增加时钟偏差的动机;我们的一台服务器有一个“漂移”的时钟。我们最终通过添加一个 cron 作业来每天将时钟与我们的注册表(具有时间服务)同步来解决这个问题。

于 2015-12-05T17:14:03.797 回答