【发布时间】:2015-11-26 05:56:39
【问题描述】:
我正在使用XML::Compile 套件与SOAP API 配合使用,该SOAP API 使用WSSE 安全性和sha1 生成的摘要密码。不幸的是,XML::Compile::WSS::BasicAuth 使用的密码摘要协议是
sha1_base64(encode utf8 => "$nonce$created$password").'='
其中$nonce 和$password 是文本值,$created 是时间戳,而我正在使用的API 使用摘要生成器
sha1_base64($nonce.$created.sha1($password)).'='
我想我可以通过使用钩子重写密码来解决这个问题,就像在
$wsdl->addHook(type=> 'wsse::PasswordString',replace => \&replace_pwd);
由于当前的 CPAN 文档没有明确指定挂钩调用语法,我依赖于模块作者在 http://grokbase.com/t/sc/xml-compile/1283vscwxz/need-help-with-xml-compile-translate-writer-and-attributes-with-namespace 的 cmets。然而,回调函数replace_pwd() 永远不会被调用,结果是XML::Compile::WSS::BasicAuth 生成的原始(错误)密码继续被发送。
如何让它工作?
TIA。
【问题讨论】: