繁体   English   中英

使用Ruby连接到需要用户名,密码和安全证书(.cer文件)连接的Microsoft SOAP Web服务

[英]Using Ruby to connect to a Microsoft SOAP web service that requires a username, password and a security certificate (.cer file) to connect to it

首先是一点背景:

我已经设法使用C#连接到Microsoft SOAP Web服务。 要使用此Web服务,我必须在C#代码中提供用户名和密码。 我还必须将安全证书(以.cer格式)安装到系统证书的“根证书颁发机构”部分。 服务的地址是一个安全的“https://”地址。

(顺便说一下,我使用命令行工具“svcutil.exe https://address.of.service ”为我自动生成了用于连接服务的C#类)

这是我的问题:

如何使用Ruby连接到此Web服务? 我不知道从哪里开始。 我不知道我的.cer文件,用户名和密码应该在哪里。 有任何想法吗?

更多的信息:

使用这些 C# 指令 ,我能够确切地找到发送的XML消息,以及收回的XML消息。 这些XML非常简单,但“https://”永远不会出现在它们中,即使Web服务的地址是HTTPS。 我不知道为什么会这样。 我想从服务发送和接收消息只是与实际连接到服务不同的事情。

我可以热烈推荐使用Savon来处理Ruby中的SOAP!

我假设它是你正在处理的HTTP基本身份验证,在这种情况下它应该非常简单。 只是:

client = Savon::Client.new do
  http.auth.basic "user_name", "password"

  # Use a local wsdl
  wsdl.document = File.expand_path("../wsdl/ebay.xml", __FILE__)
  # or from internet
  wsdl.document = "http://service.example.com?wsdl"

  # to list SOAP actions
  client.wsdl.soap_actions
end

(这只是从我的头上,所以它可能有点偏离)阅读我发布的链接,如果你无法弄清楚我的消息。 :)

证书文件用于您的计算机接受要连接的服务器的标识。 如果您已将其安装到您的计算机上,我认为您不必在该部分上执行任何其他操作。

编辑

如果您不能使用WSDL文件,则必须手动构建xml,这非常难看,但如果不是其他方式则可能。 Nokogiri可用于构建xml文档,然后您可以简单地将xml文档POST到正确的URL。 我有很好的使用httpi-ntlm处理身份验证的经验。

你在这里谈论的是传输安全性,而不是消息安全性。 您在Windows服务器上安装的证书是用于加密SSL连接的证书。 您需要对Ruby进行的操作是确保在建立连接时使用与您安装的证书对应的客户端证书来加密您使用的SSL连接。

这是半服务器管理(SSL证书安装)和一半代码(确保使用正确的证书)。

我不是红宝石的专家,但我认为你需要像这样利用你的连接X509证书。 WCF使用配置文件来执行相同的操作,而传统的ASMX服务使用代码来执行此操作。

暂无
暂无

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

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