WCF Security - вопросы новичка - - PullRequest
0 голосов
/ 11 марта 2012

Я читал о безопасности WCF целый день и не могу сказать, что мне это удобно.

Я разработал несколько служб WCF, развернул их на тестовом сервере и могу вызватьот клиента.Обе стороны C # / VS 2010. Службы размещены в IIS 6. В настоящий момент нет возможности перейти на более свежую версию.

Итак, я читал, что могу использовать HTTP только с IIS 6, что, как мне кажется,я ограничиваюсь basicHttpBinding или wsHttpBinding в качестве привязки.

Я также читал, что XML, отправляемый по проводам с использованием wsHttpBinding, зашифрован, тогда как basicHttpBinding - нет.

Похоже, я хочу использовать wsHttpBinding, поскольку мне понадобится какая-то аутентификация, и я предполагаю, что имя пользователя / пароль будут переданы вместе с входящими сообщениями.

Первый вопрос -если я использую wsHttpBinding, клиенты должны звонить, используя https?И тогда мне нужно беспокоиться о сертификатах и ​​т. Д. На сервере?

Второй вопрос - какие параметры безопасности мне доступны?Должны ли абоненты быть пользователями Windows на сервере, или я могу создать свое собственное имя пользователя / пароль и сделать так, чтобы эта часть службы и службы выполняла проверку и не имела никакого отношения к пользователям Windows?Если мне нужно пойти с пользователями Windows, я полагаю, что обычно на сервере настраивается одна учетная запись пользователя, и все звонящие используют это?

Основная идея заключается в том, что мне нужно открыть эту службу для выбранных абонентов, но нене хочу, чтобы кто-то мог найти услугу и позвонить ей.Мне нужно как-то контролировать, кто звонит в сервис.Является ли имя пользователя / пароль стандартным способом сделать это?Могу ли я, например, определить GUID, который должны пройти все абоненты?

1 Ответ

0 голосов
/ 12 марта 2012

В ответ на ваш первый вопрос. Для wsHttpBinding не требуется HTTPS. Вы можете использовать HTTP, если для SecurityMode установлено значение «Сообщение» или «Нет». Однако, поскольку вы предлагаете отправить имя пользователя и пароль с сервисными вызовами, вам определенно не следует этого делать. Если вы это сделаете, то любой сможет просмотреть сообщение в пути и прочитать имя пользователя и пароль, и ваша безопасность будет полностью нарушена. Боюсь, вам придется получить сертификат и использовать HTTPS. Это не так уж и плохо, и есть много ресурсов в Интернете, чтобы помочь вам.

Кстати, вы можете использовать HTTPS с basicHttpBinding, а также wsHttpBinding. Кроме того, вы должны рассмотреть возможность использования REST для простоты. WCF имеет хорошую поддержку для него (webHttpBinding) и лучшую поддержку, предоставляемую Web API .

Отвечая на ваши вторые вопросы, вам не нужно, чтобы абоненты были пользователями Windows на вашем сервере, и вы можете использовать имя пользователя и пароль. Это называется базовой аутентификацией. Опять же, есть много об этом в Интернете. Начало здесь .

Если вы сделаете это, вам, очевидно, потребуется база данных, в которой будут храниться имена пользователей и пароли, чтобы вы могли затем подтвердить и предоставить или запретить доступ к вашим услугам. Самый простой способ достичь этого с WCF - это использовать одного из поставщиков членства по умолчанию .

...