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

本文关键字:连接 文件 cer Microsoft 服务 web SOAP 安全 用户 Ruby 使用 | 更新日期: 2023-09-27 18:29:14

首先是一个小背景:

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

(顺便说一句,我用来连接服务的C#类是用命令行工具"svcutil.exe"自动为我生成的https://address.of.service")

这是我的问题:

如何使用Ruby连接到此web服务?我甚至不知道从哪里开始。我不知道我的.cer文件、用户名和密码应该放在哪里。有什么想法吗?

更多信息:

使用C#的这些指令,我已经能够准确地了解发送了什么XML消息,以及接收回了什么XML信息。这些XML相当简单,但"https://"从未出现在其中,即使web服务的地址是https。我不知道为什么。我想从服务发送和接收消息与实际连接到服务是分开的。

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

我强烈建议使用Savon来处理Ruby中的SOAP!

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

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证书安装)和一半的代码(确保使用正确的证书)。

我不是Ruby专家,但我认为您需要这样的东西来在连接中使用x509证书。WCF使用配置文件来做同样的事情,而传统的ASMX服务使用代码来做这件事。