Ограничение конфигурации WCF в коде - PullRequest
0 голосов
/ 04 февраля 2010

Мы хотели бы сохранить WCF в файле конфигурации.

В то же время мы хотели бы, чтобы код отклонял запрос, если данные будут передаваться по сети в незашифрованном виде.Примерно так: если запрос имеет привязку basichttpbinding без https, выдать исключение.

Можно ли как-нибудь узнать, как сервисный код знает, как он вызывается?1009 *

Из комментариев видно, что вопрос был не так ясен.

Я пытаюсь «исправить» следующую ситуацию: мы устанавливаем сервис с basichttpBinding и https.Затем администратор меняет его, чтобы не использовать https.В результате данные отправляются незашифрованными по сети.

Ответы [ 3 ]

3 голосов
/ 04 февраля 2010

Я не уверен, что понимаю, что вы хотите ... Вы говорите о проверке, в самой службе, как она вызывается и отклоняет некоторые запросы, если они не соответствуют определенным критериям?

Я уверен, что это возможно сделать (по крайней мере, некоторые вещи, такие как проверка SSL, более или менее просты), но сначала я бы спросил, почему, если вы хотите, чтобы ваш сервис вызывался через безопасные привязки, почему Вы выставляете сервис, используя в первую очередь незащищенные. Разве не имеет смысла проверять правильность конфигурации службы?

1 голос
/ 05 февраля 2010

Вы хостинг ?? Самый упрощенный подход был бы:

ServiceHost serviceHost = new ServiceHost(typeof(Service1), "http://localhost:1234/MyService/xml");

foreach (ServiceEndpoint sep in serviceHost.Description.Endpoints)
{
    if(sep.Binding.Scheme != "https")
    {
       // either just remove that endpoint, or signal an error
    }
}

Конечно, когда вы размещаете в IIS, это становится немного сложнее ... вам, возможно, придется создать свой собственный потомок ServiceHost, чтобы выполнить эту проверку, и убедиться, что файлы * .svc на основе IIS используют этот пользовательский хост. Конечно, умный администратор может обмануть это, используя базовый ServiceHost вместо собственного пользовательского класса хоста ......

1 голос
/ 04 февраля 2010

У меня нет примера для вас, но имейте в виду, что все, что вы можете сделать с помощью конфигурации с WCF, вы можете сделать в коде. Вам даже не нужно иметь файл конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...