簡體   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