我们在我们的web服务框架中使用了较早版本的apache axis2。我们正在使用第1.2部分作为其中的一部分。
我试图使用密码摘要与‘现在’和‘时间戳’机制的身份验证。我们要去做验证工作了。我已经让身份验证机制正常工作(包括密码回调等)。
我担心的问题是,要识别“重播攻击”的壁垒,基本上与识别这些攻击相关的壁垒模块的功能似乎是不活跃的。我可以多次向我的axis2服务发送相同的安全头(甚至发送我昨天生成的安全报头),它可以进行身份验证并完成webservice请求。
我最好的猜测是:我缺少了一个配置设置,这个配置设置可以让这个模块检测重放攻击。我尝试过在下面的链接(在services.xml文件中)中给出的配置建议,但似乎都不起作用:-
有谁能帮我或者告诉我我错过了什么,以及在哪里(我可以想象这是配置设置相关的)?
我已经在axis2.xml文件中获得了壁垒模块声明:- <module ref="rampart"/>
在声明了所有操作之后,我认为我的services.xml文件中有我认为是壁垒配置设置;-
<parameter name="InflowSecurity">
<action>
<items>UsernameToken Timestamp</items>
<passwordCallbackClass>com.myCompany.service.dummy.MyAuthenticator</passwordCallbackClass>
</action>
</parameter>
<rampart:rampartconfig xmlns:rampart="http://ws.apache.org/rampart/policy">
<rampart:timestampprecisioninmilliseconds>true
</rampart:timestampprecisioninmilliseconds>
<rampart:timestampttl>300</rampart:timestampttl>
<rampart:timestampmaxskew>300</rampart:timestampmaxskew>
<rampart:timestampstrict>false</rampart:timestampstrict>
<rampart:ReplayDetection>1000</rampart:ReplayDetection>
</rampart:rampartconfig> 发布于 2013-01-31 13:27:06
如果使用的是“壁垒-1.2”,则必须在服务中实现重放检测。传入的TimeStamp信息可在密钥TimeStamp下的消息上下文属性中包含的安全标头处理结果中获得。这是一个向量,其中的第一项是一个"org.apache.ws.security.handler.WSHandlerResult“实例(下一个代码片段中的wsResult)。
然后,您可以获得时间戳信息,如下所示:
actionResult = WSSecurityUtil.fetchActionResult(wsResult,
WSConstants.TS);
if (actionResult != null) {
Timestamp timestamp = actionResult.getTimestamp();
//Your validation goes here...
}正如您参考的博客文章所建议的,您可以尝试升级到rampart-1.6.2,并使用基于策略的配置。
https://stackoverflow.com/questions/14619399
复制相似问题