2012-07-09 12 views
5

में EncodingType विशेषता जोड़ने के लिए कैसे मैं एक वेब सेवा जो Nonce में EncodingType की आवश्यकता के लिए एक साबुन कॉल करने के लिए (Savon साथ) एक गहरे लाल रंग का वेब सेवा ग्राहक बनाना होगा।सोप ग्राहक: 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 तत्व में है कि विशेषता जोड़ने के लिए पता नहीं कैसे: तो सही साबुन संदेश इस तरह Nonce तत्व होगा। मेरे यहाँ कोड:

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

तो मेरे सवाल है, Nonce तत्व को विशेषता EncodingType जोड़ने का तरीका, बदले बिना/हटाने के:

...... 
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 
...... 

और उत्पन्न सोप संदेश में Nonce की तरह है Nonce तत्व में SomeHashValue?

उत्तर

3

मैं सफलता 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'} } 
संबंधित मुद्दे