среда, 14 декабря 2011 г.

Securing the WCF service interop with unmanaged C++ gSoap client

Возникла задачка защитить существующий WCF сервис, защита нужна в смысле авторизации клиентов сервиса, чтобы кто попало не коннектился и не запускал удаленные методы.
Сложность в том, что родной клиент написан на unmanaged C++, с использованием gSoap, поэтому большинство родных примочек WCF отпадает.

Остановился на использовании авторизации с Password Digest и Message Replay Detection, первое без второго бесполезно.

В gSoap основная сложность состоит в том, чтобы в первый раз использовать WSSE plugin. Лично я сильно споткнулся на том, что нужно добавить #import "wsse.h" в генерируемый утилитой wsdl2h заголовок перез запуском soapcpp2.

На уровне WCF service нужен танец (опа) с тремя бубнами:
  • Роутинг по телу SOAP сообщения, сэмпл
  • Проверка Password Digest - нужен кастомный C# код, есть сэмпл.
  • Если нужен именно http транспорт, не https, то WCF сделает все, чтобы ваш код не работал, поэтому есть сэмпл от гуру.

Комментариев нет:

Отправить комментарий