Безопасность WCF - список того, что я не понимаю
Я собираюсь по кругу в отношении WCF и безопасности, поэтому я просто собираюсь загружать вопросы здесь и надеюсь, что кто-то может помочь мне получить четкую картину.
-
Может кто-нибудь, пожалуйста, дайте мне простое объяснение на английском языке в отношении безопасности сообщений и сообщений.
-
Я думаю, что у меня есть служба, работающая под SSL, которая будет аутентифицировать пользователя на основе их учетных данных Windows. Я также думаю, что я понимаю, как ограничить доступ к сервисному методу через PrincipalPermission. Но как я могу получить текущий IPrinciple, поэтому я могу возвращать разные результаты, зависящие от того, кто вызывает эту услугу?
-
Я выяснил, как включить трассировку, и я могу видеть журналы трассировки с помощью "Средство просмотра журналов Microsoft Service Trace Log Viewer", но, черт возьми, я буду проклят, если смогу выяснить, что отображается на дисплее. Есть ли достойный ресурс, объясняющий, как использовать эту вещь?
-
При использовании "Certificate" clientCredentialType это отличается от SSL?
-
При использовании "client" clientCredentialType "Windows", как я могу видеть, через какие окна пользователя проходит?
-
Мои требования означают, что я должен использовать basicHttpBindings. Правильно ли я предполагаю:
- У меня есть только безопасность уровня транспорта для меня?
- Я не могу реализовать пользовательское имя пользователя/пароль для этой привязки?
Я знаю, что эти вопросы могут показаться глупыми, но любая помощь с разъяснением действительно поможет.
EDIT:
- Как добавить пользовательские заголовки SOAP к моей службе в аналогичной усадьбе сервисам .asmx? Это действительный подход?
ИЗМЕНИТЬ:
В дополнение к вышеуказанным вопросам я хотел бы узнать, можно ли аутентифицировать мобильное устройство Windows на основе его пользователя Windows, проверив Active Directory. Для всего, что я нашел до сих пор, это кажется маловероятным.
N.B. Для тех, кто не знает, что доступно для Windows CE версии WCF, это: только уровень безопасности транспортного уровня, а также none/certificate для типа учетных данных клиента. Таким образом, кажется, что CE WCF не разрешает это по умолчанию, но могу ли я безопасно отправить эту информацию в сообщении (через подпись метода) и будет ли это приемлемым способом отправки такого рода информации?
Ответы
Ответ 1
Я не знаю всех ответов, но вот те, которые я знаю
- Транспортная безопасность означает, что связь зашифровывается, пока сообщение транспортируется, поэтому его нельзя читать и/или подделывать. Безопасность сообщений означает, что содержимое самого сообщения зашифровывается, но это не обязательно. Безопасность сообщений может, например, использоваться с HTTP, в то время как для безопасности транспорта потребуется использование HTTPS (или других привязок).
- IPrincipal main = Thread.CurrentPrincipal;
- нет ответа
- Да, хотя сам SSL использует сертификаты, это не то же самое. Вы можете отправить клиенту сертификат, который известен службе или подписанный доверенным органом, чтобы служба узнала, кто является клиентом, и разрешить ли им совершать вызов или нет. Использование SSL гарантирует, что третьи стороны не смогут прочитать связь между клиентом и службами, перехватив сетевые пакеты.
- IPrincipal main = Thread.CurrentPrincipal; principal.Identity.Name;
- Нет.
- У вас есть None, Transport, Message и Mixed security в качестве ваших параметров, однако для безопасности транспорта потребуется вызывать конечную точку с использованием HTTPS, поскольку это защищенная версия протокола
- EDIT: просмотрите обсуждение этот форум.
И вопросы, конечно, не глупы.
P.S. Я могу рекомендовать книгу программирование WCF-сервисов Juval Lowy по-настоящему глубоко и поставляется с действительно полезной структурой, расширяющей WCF/Упрощение некоторых вещей.
Ответ 2
Отъезд Руководство по безопасности WCF. Если вам нужна дополнительная информация, вы сможете найти все там, что вполне достаточно. Хотя это похоже на то, что @olle дал довольно полный ответ....
Ответ 3
Также проверьте эти сценарии общей безопасности WCF