SOAP API HTTPS - соединение с классическим ASP - PullRequest
1 голос
/ 10 января 2011

Я знаю, что существует множество дискуссий, касающихся подключения классического ASP-клиента к веб-службе SOAP, но мне интересно подключиться к службе SOAP с поддержкой HTTPS.

У нас есть существующий веб-сервис SOAP, написанный на WCF, и он отлично работает ... для клиентов .NET. У нас был запрос от нового клиента: «Мы используем классический ASP - как нам подключиться к вашему API веб-сервиса?» Я понятия не имел, с чего начать, и до меня дошло, что я понятия не имею, какова структура реальных сообщений SOAP.

Я видел примеры классического ASP-чата с веб-службами SOAP в Интернете, но ни одного, который обменивался сообщениями через HTTPS. Мы используем безопасность на уровне сообщений в привязках WCF.

Является ли это безнадежной причиной - WS-Security препятствует взаимодействию классического ASP со службой HTTPS SOAP?

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 10 января 2011

Вариант 1: сообщите своему клиенту, какой это год, и предположите, что существуют затраты, связанные с использованием устаревших технологий, и что одна из этих затрат заключается в том, что вы не будете поддерживать «Classic ASP».

Вариант 2. Напишите код на C # для создания оболочек COM для ваших служб. Классический код ASP (или VB6, VBA или любой другой) может вызывать COM-объекты, даже не подозревая, что они используют современный код, разработанный с использованием современных инструментов.

1 голос
/ 13 января 2011

После небольшого исследования я придумал следующее:

  1. Защита сообщений WCF не может использоваться с классическим ASP

  2. Я создал вторую конечную точку службы, которая имела следующие привязки:

      <basicHttpBinding>
      <binding name="SecureBasic" >
      <security mode="TransportWithMessageCredential">
        <message clientCredentialType="UserName"/>
      </security>
      </binding>
     </basicHttpBinding>"
    

Несколько замечаний по этому поводу -

  1. Вам нужно будет использовать HTTPS (т.е. установить самоконтроль)

  2. Это не предпочтительный метод безопасности для использования через Интернет - в идеале вы должны использовать безопасность сообщений.

  3. Я использовал валидатор имени пользователя и пароля для аутентификации запроса клиента

Следующий ASP-код хорошо работает при вызове этой службы:

        soapServer = "YourSOAPAddress"
        soapMessage = "Put Your SOAP Message in here use Charlies / Fiddler to determine the message"
        Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP.3.0") 
        xmlhttp.setOption(2) = 13056
        xmlhttp.open "POST", soapServer, False
        xmlhttp.setRequestHeader "SOAPAction",   "urn:Alpha.Services.API.DeviceService/IDeviceService/GetDevices"
        xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
        xmlhttp.send(soapMessage)   
        Response.Write "<br>Finished calling Web Service."
        Response.Write "<br>Status = " & xmlhttp.statusText
        Response.Write "<br>ResponseText = " &  xmlhttp.responseText

Для клиентских систем, использующих язык, который не поддерживает WS-Security (например, ASP), это одно из возможных решений.

0 голосов
/ 10 января 2011

Классический ASP не должен иметь проблем при работе с веб-службами с поддержкой WS-Security.Это будет немного сложнее, чем вы думаете.Что касается HTTPS части уравнения?Это должно быть прозрачно для вашего сервиса.Подключение к чему-то через HTTPS работает так же, как HTTP.

Если все остальное не удалось, вы можете вручную создать конверт SOAP и поместить все детали безопасности вручную.

К счастью, в этом нет необходимости.Microsoft выпустила Microsoft SOAP Toolkit , чтобы упростить работу с веб-службами.Вы должны быть в состоянии справиться с вашей ситуацией довольно легко, используя это.

...