使用ruby/savon定制绑定oracle WFC web服务

使用ruby/savon定制绑定oracle WFC web服务,ruby,oracle,web-services,ssl,savon,Ruby,Oracle,Web Services,Ssl,Savon,我试图使用一个带有ruby和savon的非基本HTTP绑定的wfc web服务 WS-provider使用消息、保护、服务策略实现了oracle/wss11、用户名、令牌 ) 如果我理解正确,由于非基本http绑定,此策略需要某种加密(根据此) 所描述的WS实际上是通过ssl实现的,这可能是所有问题的根源,因为我实现得很差 甚至可以使用带有savon的非基本http绑定的WFC WS吗 我的背景是ruby和rails,但我不熟悉WS(和savon)和ssl的使用 现在WS的提供者并没有提供太多的

我试图使用一个带有ruby和savon的非基本HTTP绑定的wfc web服务

WS-provider使用消息、保护、服务策略实现了oracle/wss11、用户名、令牌 )

如果我理解正确,由于非基本http绑定,此策略需要某种加密(根据此)

所描述的WS实际上是通过ssl实现的,这可能是所有问题的根源,因为我实现得很差

甚至可以使用带有savon的非基本http绑定的WFC WS吗

我的背景是ruby和rails,但我不熟悉WS(和savon)和ssl的使用

现在WS的提供者并没有提供太多的支持。事实上,它们只提供对java或.net实现的支持(考虑到它是WS,因此与平台无关,这可能吗?)

试图运行以下相当简单的代码

require 'savon'
client = Savon.client do 

  wsdl      "https://apps.ika.gr/hospitalisationWSS_TEST-hospitalisationWSS_TEST-context-root/MainWSClassPort?WSDL"
  wsse_auth "ΥΥΥΥ", "ΧΧΧΧ"     # ALTERED
  wsse_timestamp true

  pretty_print_xml true
  log_level :debug

  ssl_verify_mode :none
  ssl_cert_file       "files/ika.cer"  # provided by WS provider
end


save_admission_hl7_msg = "MSH|^~\&|||||201310111112||ADT^A13^ADT_A13|2013000012113|P|2.6|||||||||66645678912345678945|^^^^^^^^^10000\nEVN|A13|201310101122|||nosiliapap\nPID\nPV1||I|||||||||||||||||2013000012111|||||||||||||||||||||||||||||||2013000012113\n"

response = client.call(:save_admission_hl7,  
         :attributes => { :xmlns => "http://bean.intracom.com/" }, 
          :message => { :arg0 => {  :@xmlns=>'', :content! =>{ :hl7ADT =>     save_admission_hl7_msg     }    }  } )
end

puts response.body
获得以下输出

D, [2013-12-04T08:21:20.445549 #3088] DEBUG -- : HTTPI GET request to apps.ika.gr (httpclient)
I, [2013-12-04T08:21:22.074643 #3088]  INFO -- : SOAP request: https://apps.ika.gr/hospitalisationWSS_TEST-hospitalisationWSS_TEST-context-root/MainWSClassPort
I, [2013-12-04T08:21:22.074643 #3088]  INFO -- : SOAPAction: "saveAdmissionHl7", Content-Type: text/xml;charset=UTF-8, Content-Length: 1363
D, [2013-12-04T08:21:22.075643 #3088] DEBUG -- : <?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://bean.intracom.com/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Header>
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-1">
        <wsse:Username>YYYY</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">XXXX</wsse:Password>
      </wsse:UsernameToken>
      <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-2">
        <wsu:Created>2013-12-04T06:21:22Z</wsu:Created>
        <wsu:Expires>2013-12-04T06:22:22Z</wsu:Expires>
      </wsu:Timestamp>
    </wsse:Security>
  </env:Header>
  <env:Body>
    <tns:saveAdmissionHl7 xmlns="http://bean.intracom.com/">
      <arg0 xmlns="">
        <hl7ADT>MSH|^~&amp;|||||201310111112||ADT^A13^ADT_A13|2013000012113|P|2.6|||||||||66645678912345678945|^^^^^^^^^10000
EVN|A13|201310101122|||nosiliapap
PID
PV1||I|||||||||||||||||2013000012111|||||||||||||||||||||||||||||||2013000012113
</hl7ADT>
      </arg0>
    </tns:saveAdmissionHl7>
  </env:Body>
</env:Envelope>

D, [2013-12-04T08:21:22.076643 #3088] DEBUG -- : HTTPI POST request to apps.ika.gr (httpclient)
I, [2013-12-04T08:21:22.472665 #3088]  INFO -- : SOAP response (status 500)
D, [2013-12-04T08:21:22.473665 #3088] DEBUG -- : <?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Body>
    <ns2:Fault xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns3="http://www.w3.org/2003/05/soap-envelope">
      <faultcode xmlns:ns0="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">ns0:FailedCheck</faultcode>
      <faultstring>FailedCheck : failure in security check</faultstring>
    </ns2:Fault>
  </S:Body>
</S:Envelope>

f:/rubystack/ruby/lib/ruby/gems/1.9.1/gems/savon-2.3.0/lib/savon/response.rb:85:in `raise_soap_and_http_errors!': (ns0:FailedCheck) FailedCheck : failure in security check (Savon::SOAPFault)
        from f:/rubystack/ruby/lib/ruby/gems/1.9.1/gems/savon-2.3.0/lib/savon/response.rb:14:in `initialize'
        from f:/rubystack/ruby/lib/ruby/gems/1.9.1/gems/savon-2.3.0/lib/savon/operation.rb:64:in `new'
        from f:/rubystack/ruby/lib/ruby/gems/1.9.1/gems/savon-2.3.0/lib/savon/operation.rb:64:in `create_response'
        from f:/rubystack/ruby/lib/ruby/gems/1.9.1/gems/savon-2.3.0/lib/savon/operation.rb:55:in `call'
        from f:/rubystack/ruby/lib/ruby/gems/1.9.1/gems/savon-2.3.0/lib/savon/client.rb:36:in `call'
        from eopyy.rb:82:in `<main>'
调试--:HTTPI获取对apps.ika.gr(httpclient)的请求 一、 [2013-12-04T08:21:22.074643#3088]信息--:SOAP请求:https://apps.ika.gr/hospitalisationWSS_TEST-hospitalisationWSS_TEST-context-root/MainWSClassPort 一、 [2013-12-04T08:21:22.074643#3088]信息--:SOAPAction:“保存许可HL7”,内容类型:text/xml;字符集=UTF-8,内容长度:1363 D、 [2013-12-04T08:21:22.075643#3088]调试--: YYYY XXXX 2013-12-04T06:21:22Z 2013-12-04T06:22:22Z MSH | ^ ~&|||||201310111112 | ADT | A13 | ADT | u A13 | 20130000113 | P | 2.6 | 66645678912345678945 | 10000 | EVN | A13 | 201310101122 | | |诺西利亚帕普 PID PV1(一) D、 [2013-12-04T08:21:22.076643#3088]调试--:HTTPI向apps.ika.gr(httpclient)发送POST请求 一、 [2013-12-04T08:21:22.472665#3088]信息--:SOAP响应(状态500) D、 [2013-12-04T08:21:22.473665#3088]调试--: ns0:失败检查 FailedCheck:安全检查失败 f:/rubystack/ruby/lib/ruby/gems/1.9.1/gems/savon-2.3.0/lib/savon/response.rb:85:in'raise_soap_和_http_errors':(ns0:FailedCheck)FailedCheck:安全检查失败(Savon::SOAPFault) from f:/rubystack/ruby/lib/ruby/gems/1.9.1/gems/savon-2.3.0/lib/savon/response.rb:14:in'initialize' from f:/rubystack/ruby/lib/ruby/gems/1.9.1/gems/savon-2.3.0/lib/savon/operation.rb:64:in'new' from f:/rubystack/ruby/lib/ruby/gems/1.9.1/gems/savon-2.3.0/lib/savon/operation.rb:64:in'create_response' from f:/rubystack/ruby/lib/ruby/gems/1.9.1/gems/savon-2.3.0/lib/savon/operation.rb:55:in'call' from f:/rubystack/ruby/lib/ruby/gems/1.9.1/gems/savon-2.3.0/lib/savon/client.rb:36:in'call' from eopyy.rb:82:in`' 现在,由于我对WS和SSL的使用知之甚少,我无法找出错误。 是SSL吗?我应该使用ssl\u ca\u证书文件而不是ssl\u证书文件吗?(显然我已经试过了)。我也需要使用密钥文件吗

提供者实际上提供了一个.jks文件(在上面的“ika.cer”证书旁边),但也提到它应该只在java实现中使用(而不是.net)。我已经解包了jks文件,并试图使用其中包含的证书和文件,但没有成功


非常感谢您提供的任何帮助、线索、提示。

如果您在ssl\u certifite\u模式下运行:无您不需要认证文件。正如设置所建议的:没有认证。如果你希望人们回答你,你可能应该把你的问题减少到必要的最低限度。大多数人都愿意提供帮助,但不喜欢通过阅读别人的源代码来理解别人的问题。到目前为止,我可以使用Ruby/Savon使用各种WS。我的建议是首先使用SoapUI来找到一个有效的解决方案。这将把WS与Ruby问题分开。在第二步中,您可以将纯WS解决方案转换为Ruby解决方案。我很乐意帮助你。谢谢你的回复。我的印象是“无”只会忽略本地验证(从而忽略证书的有效性),但仍然将其用于连接。不管怎样,我试过了,但没有改变任何事情(同样的错误)。是的,关于我的文章长度,你也许是对的。尽管我的意图正好相反(我想给出整个情况)。您是否实际使用了带有savon的WFC WS使用ssl?关于SoapUI,我已经试过了,但没有成功。也就是说,当我给它一个wsdl url时,它只会因为一个“加载url失败”而崩溃(尽管url会在浏览器中打开),而且,在我的ruby脚本中,我实际上可以获取wsdl(并通过client.operations显示操作)。当我实际尝试发布到该程序时,该程序崩溃。我处理了由IIS(*.svc)和TomCat/JAX-WS托管的WS。两者都是用同一种描述语言“手工”完成的。我不知道WFC是Windows基础类??,看起来很奇怪,因为另一方面涉及Oracle软件。SoapUI崩溃是一个不好的迹象:-(。它在95%的情况下对我有效。我个人没有使用WSSE,所以我不能对此发表评论。