我使用Rampart作为我在Axis2上的WS-安全模块。
我的策略XML文件如下:
<wsp:Policy wsu:Id="UsernameToken"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>>
<sp:IncludeTimestamp />
</wsp:Policy>
</sp:TransportBinding>
<sp:SupportingTokens
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient" />
</wsp:Policy>
</sp:SupportingTokens>
</wsp:All>
</wsp:ExactlyOne>
<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">
<ramp:passwordType>PasswordText</ramp:passwordType>
</ramp:RampartConfig>
它工作正常,如下面的SOAP调用所示:
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-1">
<wsu:Created>2013-12-24T12:55:39.089Z</wsu:Created>
<wsu:Expires>2013-12-24T13:00:39.089Z</wsu:Expires>
</wsu:Timestamp>
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-2">
<wsse:Username>username</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>我想要做的是配置所创建的值,使其不一定绑定到服务器时间,并配置在创建和过期之间的持续时间。
我怎么能这么做?
发布于 2013-12-25 17:32:44
好的,我在回答我自己的问题。
似乎没有必要设置不同的时间戳,因为根据标准,时间戳应该以UTC格式发送。
对于TTL,可以从policy.xml文件中配置:
<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">
<ramp:timestampTTL>600</ramp:timestampTTL>
<ramp:timestampMaxSkew>600</ramp:timestampMaxSkew>
<ramp:RampartConfig>我会把这条线打开一两天,看看是否还有人愿意提出不同的意见。
发布于 2014-06-17 22:09:24
现在,我们有一个关于创建和到期日期之间的持续时间的问题。消息似乎在过期后在服务器上接收,这是因为服务器和客户端时钟之间有很大的差异(我指的是超过2秒或5秒)。一个解决办法是增加
<ramp:timestampTTL>600</ramp:timestampTTL>
<ramp:timestampMaxSkew>600</ramp:timestampMaxSkew>这可以通过在客户端使用rampartConfig.setTimestampTTL和rampartConfig.setTimestampmaxSkew方法来完成。
https://stackoverflow.com/questions/20761415
复制相似问题