Использование Ruby для подключения к веб-службе Microsoft SOAP, для которой требуется имя пользователя, пароль и сертификат безопасности (файл .cer) для подключения к нему. - PullRequest
4 голосов
/ 27 марта 2012

Сначала немного фона:

Мне уже удалось подключиться к веб-службе Microsoft SOAP с помощью C #. Чтобы использовать этот веб-сервис, я должен указать имя пользователя и пароль в коде C #. Я также должен установить сертификат безопасности (в формате .cer) в раздел «Root Certificate Authorities» системных сертификатов. Адрес службы - это безопасный «https://” адрес».

(Кстати, класс C #, который я использую для подключения к службе, был автоматически сгенерирован для меня с помощью инструмента командной строки "svcutil.exe https://address.of.service")

Вот мой вопрос:

Как я могу подключиться к этому веб-сервису, используя Ruby? Я не знаю, с чего начать. Я не знаю, где должны быть точно мои файл .cer, имя пользователя и пароль. Есть идеи?

Дополнительная информация:

Используя эти инструкции для C #, я смог точно узнать, какое XML-сообщение отправлено и какое XML-сообщение получено обратно. Эти XML довольно просты, но «https://” никогда не появляется в них, даже если адрес веб-службы - HTTPS. Я не уверен, почему это так. Я полагаю, что отправка и получение сообщений от службы - это отдельное дело от фактического подключения к услуге.

Ответы [ 2 ]

4 голосов
/ 30 марта 2012

Я настоятельно рекомендую использовать Savon для работы с SOAP в Ruby!

Я предполагаю, что вы работаете с HTTP Basic-аутентификацией, в этом случае она должна быть довольно простой.Просто:

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 на правильный URL-адрес.У меня есть хороший опыт использования httpi-ntlm для аутентификации.

1 голос
/ 05 апреля 2012

То, о чем вы говорите, - это безопасность транспорта, а не безопасность сообщений.Сертификат, который вы установили на сервере Windows, используется для шифрования SSL-соединения.Что вам нужно сделать с Ruby, так это убедиться, что при установлении соединения клиентский сертификат, соответствующий установленному вами сертификату, используется для шифрования используемого вами SSL-соединения.

Это половина управления сервером (установка SSL-сертификата) и половина кода (убедитесь, что вы используете правильный сертификат).

Я не эксперт по Ruby, но я думаю, что вам понадобится что-то вроде this , чтобы использовать сертификат x509 в вашем соединении.WCF использует файл конфигурации, чтобы сделать то же самое, в то время как традиционные сервисы ASMX используют код для этого.

...