Концепции безопасности в WCF

3 Янв
2012

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

Аутентификация


Одна из самых важных проблем безопасности – узнать, кто стучится в дверь. Аутентификацией называется процедура установления личности субъекта, на пример, путем проверки предоставляемых им верительных грамот в виде имени и пароля. Не менее важно, чтобы обратившаяся сторона была уверена, что ей отве чает именно та служба, к которой она обращалась, а не какой нибудь самозванец. WCF предоставляет несколько механизмов взаимной аутентификации, в том числе на основе сертификатов или учетных записей и групп Windows. Применяя эти и другие средства, каждая сторона может надежно удостовериться в том, что имеет дело с ожидаемым партнером.

Авторизация


После того как подлинность обратившейся стороны установлена, необходимо решить, разрешено ей сделать то, за чем она обратилась. Этот шаг называется авторизацией. Отметим, что можно авторизовать и анонимных пользователей, по этому, хотя обычно авторизация следует за аутентификацией, строго говоря, эти два этапа независимы. Авторизацию можно выполнять по разному: прибегнув к услугам встроенных в систему или нестандартных провайдеров авторизации, с помощью специально написанного кода внутри службы, ролей ASP.NET, групп Windows, каталога Active Directory, менеджера авторизации (Authorization Manager) и т.д.

Конфиденциальность


Когда речь идет о секретной информации, мало толку идентифицировать и авторизовать клиента, если результаты обращения передаются так, что их может прочитать любой желающий. Под конфиденциальностью понимается механизм, предотвращающий чтение информации, которой обмениваются клиент и служба, посторонними лицами. Обычно это достигается за счет шифрования, и WCF пре доставляет для этого разнообразные средства.

Безопасность на уровне транспорта и сообщений


В WCF мы встречаем две основных категории безопасности; обе относятся к безопасности того, что передается между клиентом и службой (иногда эту концепцию называют безопасностью передачи). Первая – защита данных при передаче по сети, или безопасность на уровне транспорта. Вторая – безопасность на уровне сообщения, то есть способ защиты самого сообщения вне зависимости от механизма его транспортировки. Безопасность на уровне транспорта обеспечивает защиту отправляемых данных безотносительно к их содержимому. Обычно для этой цели применяют протокол Secure Sockets Layer (SSL), с помощью которого шифруются и подписываются пакеты, передаваемые по протоколу HTTPS. Существуют и другие механизмы защиты на транспортном уровне, выбор того или другого зависит от при вязки WCF. Как вы увидите ниже, в WCF многие протоколы передачи данных, например TCP, по умолчанию безопасны. У безопасности на транспортном уровне есть ограничение: предполагается, что на всех участках сетевого тракта и у всех участников конфигурация параметров безопасности согласована. Иными словами, если между отправителем и получателем сообщения имеется посредник, то нет никакой гарантии, что на участке после посредника безопасность по прежнему обеспечена (если только посредник не контролируется поставщиком исходной службы). А коль скоро это так, то при прохождении этого участка данные могут быть скомпрометированы. Кроме того, нельзя быть уверенным, что сам посредник не изменил сообщение перед тем, как передать его дальше. Особенно эти соображения важны для служб, доступ к которым производится через маршрутизаторы в Интернете, а для служб, потребляемых внутри корпоративной интрасети это менее существенно. Безопасность на уровне сообщений дает гарантию целостности и конфиденциальности отдельных сообщений вне зависимости от поведения сети. Инфраструктура открытых и закрытых ключей позволяет зашифровать и подписать сообщение, так что оно будет защищено даже при передаче по незащищенному транспортному каналу (например, по обычному протоколу HTTP). Надо ли включать безопасность на уровне транспорта и сообщений, обычно задается в конфигурационном файле.
По материалам Хабрахабр.



загрузка...

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

Наверх