Безопасность WCF - Список того, чего я не понимаю
-
19-08-2019 - |
Вопрос
Я хожу по кругу в отношении WCF и безопасности, поэтому я просто собираюсь засунуть сюда кучу вопросов и надеюсь, что кто-нибудь сможет помочь мне получить четкую картину.
Может кто-нибудь, пожалуйста, дать мне простое объяснение на английском языке безопасности транспорта против уровня сообщений.
Я подумай У меня есть служба, работающая под управлением SSL, которая будет проверять подлинность пользователя на основе его учетных данных Windows.Я также подумай Я понимаю, как ограничить доступ к сервисному методу через PrincipalPermission.Но как мне на самом деле получить текущий IPrinciple, чтобы я мог возвращать разные результаты в зависимости от того, кто вызывает службу?
Я выяснил, как включить трассировку, и я могу просматривать свои журналы трассировки с помощью "Microsoft Service Trace Log Viewer", но будь я проклят, если смогу понять, что отображается.Есть ли приличный ресурс, объясняющий, как использовать эту штуку?
При использовании clientCredentialType "Certificate" это чем-то отличается от SSL?
При использовании clientCredentialType "Windows" как я могу увидеть, через какого пользователя Windows передается?
Мои требования означают, что я должен использовать basicHttpBindings - правильно ли я предполагаю:
- Мне доступна безопасность только на транспортном уровне?
- Я не могу реализовать пользовательское имя пользователя / пароль для этой привязки?
Я знаю, что эти вопросы могут показаться глупыми, но любая помощь с разъяснениями действительно помогла бы.
Редактировать:
- Как я могу добавить пользовательские заголовки SOAP в свой сервис аналогично .asmx services?Является ли это допустимым подходом?
Редактировать:
В дополнение к вышеприведенным вопросам я хотел бы знать, возможно ли аутентифицировать устройство Windows mobile на основе его пользователя Windows, сверившись с Active Directory.Несмотря на все, что я нашел до сих пор, это кажется маловероятным.
Н.Б.Для тех, кто не знает, что доступно для версии WCF для Windows CE, это:Только безопасность транспортного уровня и либо нет / сертификат для типа учетных данных клиента.Таким образом, похоже, что WCF CE не разрешает это по умолчанию, но могу ли я безопасно отправить эту информацию в сообщении (через подпись метода) и будет ли это приемлемым способом отправки такого рода информации?
Решение
Я не знаю всех ответов, но вот те, которые я знаю
- безопасность транспортировки означает, что во время транспортировки сообщение шифруется, поэтому его невозможно прочитать и / или подделать.Безопасность сообщения означает, что содержимое самого сообщения зашифровано, однако передача не обязательно.Безопасность сообщений может, например, использоваться с HTTP, в то время как безопасность транспорта потребует использования HTTPS (или других привязок).
- Основной IPrincipal = поток.Текущий основной;
- никакого ответа
- Да, хотя сам SSL использует сертификаты, это не одно и то же.Вы можете попросить клиента отправить сертификат, который известен службе или который подписан доверенным центром, чтобы служба знала, кто такой клиент и разрешать ли ему совершать вызов или нет.Использование SSL гарантирует только то, что третьи стороны не смогут прочитать сообщение между клиентом и службами путем перехвата сетевых пакетов.
- Основной IPrincipal = поток.Текущий основной;директор.Identity.Name;
- Нет.
- В качестве опций у вас есть None, Transport, Message и Mixed security, однако для обеспечения транспортной безопасности потребуется вызвать конечную точку с использованием HTTPS, поскольку это защищенная версия протокола
- Редактировать:Ознакомьтесь с обсуждением на этот форум.
И вопросы, конечно, не глупые.
P.S.Я могу порекомендовать эту книгу программирование сервисов WCF автор: Ювал Лоуи, это действительно глубокое и поставляется с действительно полезной структурой, расширяющей WCF / упрощающей определенные вещи.
Другие советы
Проверьте Руководство по безопасности WCF.Если вам нужна дополнительная информация, вы должны быть в состоянии найти ее всю там, она достаточно полная.Хотя, похоже, @olle дал довольно полный ответ....
Также проверьте эти Общие сценарии безопасности WCF