2011-01-10 2 views
1

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

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

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

Это потерянная причина - предотвращает ли WS-Security классический ASP интерфейс с помощью службы HTTPS SOAP?

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

+0

Что такое https-сертификат (самоподписывающийся? Или подтвержденный) – dvhh

+0

Сертификат проверен. – Simian

ответ

1

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

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

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

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

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

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

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

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

Следующий код 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), это одно из возможных решений.

-1

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

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

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

+0

-1: «Инструментарий Microsoft SOAP Toolkit устарел .NET Framework. Поддержка SOAP Toolkit будет удалена в апреле 2005 года». Он также не поддерживается на современных ОС, и я не думаю, что он когда-либо поддерживал WS-Security или WS-anything-else! –

+0

@John Saunders - Возможно, он устарел, но он устарел из-за .NET Framework. ОП указывает, что он использует классический ASP ... SOAP Toolkit действительно является их единственным вариантом (устаревшим или нет). Что касается WS-Security, SOAP Toolkit позволяет вам изменять заголовки для поддержки аутентификации аутентификации Basic Username/Password (а также иметь крючок для аутентификации на основе X.509, если используется память). –

+0

@ Justin: а как насчет того, чтобы часть не поддерживалась и не работала на современных операционных системах? И это не единственный вариант - они могут создавать COM-оболочки для любого кода .NET, который им нравится. –

3

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

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

+0

Вариант 1 является привлекательным. Я полагаю, что другие языки, такие как Java и PHP, смогут поддерживать соединение с SOAP-службой через HTTPS, что я могу определить структуру SOAP-сообщений (что-то, что я еще не смог сделать, хотя я пытаюсь с Fiddler2 и Charles). – Simian

+0

@ Симиан: вы говорите о своей собственной реализации WS-Security? Вы смелый человек, чем я. Вопрос не в HTTPS, а в WS-Security. Java может использовать его, но я недавно видел вопрос о SO, который предполагает, что PHP не может. –

+0

Нет, определенно нет. Кажется, что много сообщений обмениваются при вызове одной операции SOAP, рассматривая трафик https. Клиент .net позаботится обо всем этом, мне просто интересно, существуют ли рамки для Java и PHP, которые также будут вести переговоры о безопасности службы. – Simian

Смежные вопросы