gpt4 book ai didi

ruby - 使用 Ruby 和 Savon 的 SOAP 客户端 : How to add EncodingType attribute in Nonce element

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:55 24 4
gpt4 key购买 nike

我需要创建一个 ruby​​ web 服务客户端(使用 Savon)来对需要 Nonce 中的 EncodingType 的 web 服务进行 soap 调用。所以正确的 soap 消息将具有这样的 Nonce 元素:

......
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">SomeHashValue</wsse:Nonce>
......

但是在我的 Savon 客户端中,我不知道如何在 Nonce 元素中添加该属性。我的代码在这里:

......
client = Savon.client do
wsdl.endpoint = "http://webservicehost/TestWebService"
wsdl.namespace = "namespace"
wsse.credentials "username", "password"
wsse.digest = "true"
end
client.request :get_service do |soap|
soap.input = [
"GetService",
{ "xmlns" => "namespace" }
]
soap.body = {
"locale" => "en_US",
"serviceID" => '123'
}
end
......

生成的 SOAP 消息中的 Nonce 如下:

 ......
<wsse:Nonce>SomeHashValue</wsse:Nonce>
......

所以我的问题是,如何在不更改/删除 Nonce 元素中的 SomeHashValue 的情况下将属性 EncodingType 添加到 Nonce 元素?

最佳答案

我已成功修改 gems\akami-1.2.1\lib\akami\wsse.rb 文件的 def wsse_username_token 方法。

我不知道最好的方法,但这确实有效,只需添加到 :attributes! 即可。

之前:

:attributes! => { "wsse:Password" => { "Type" => PASSWORD_DIGEST_URI } }

之后:

:attributes! => { "wsse:Password" => { "Type" => PASSWORD_DIGEST_URI }, "wsse:Nonce" => { "EncodingType" => 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary'} }

关于ruby - 使用 Ruby 和 Savon 的 SOAP 客户端 : How to add EncodingType attribute in Nonce element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11400029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com