繁体   English   中英

向XML :: Compile :: WSDL11添加挂钩以修改WSSE标头

[英]Adding hook to XML::Compile::WSDL11 to modify WSSE header

我正在使用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上模块作者的注释http://grokbase.com/t/sc/xml-compile/1283vscwxz/need-help-with-xml-compile-translate-writer-and-attributes-with-namespace 但是,永远不会调用回调函数replace_pwd() ,结果是XML::Compile::WSS::BasicAuth生成的原始(错误)密码会继续发送。

我该如何工作?

TIA。

最近我遇到了完全相同的问题,最终创建了XML :: Compile :: WSS :: BasicAuth实例,并使用从XML :: Compile :: WSS :: BasicAuth-> prepareWriting复制的代码设置XCWB_login,以生成密码我需要的字符串,并将该BasicAuth实例作为wsse_Security选项传递给XML :: Compile :: Schema-> call。

这真是la脚,但这是我发现使用这些库解决此问题的唯一方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM