Безопасность XML-веб-служб, создаваемых с помощью ASP.NET

Этот раздел посвящен технологии прежних версий. Веб-службы XML и клиенты веб-служб XML должны создаваться с использованием Windows Communication Foundation.

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

Веб-службы, созданные с помощью ASP.NET, могут выбирать параметры безопасности из вариантов проверки подлинности и авторизации, предлагаемых ASP.NET, и настраиваемой безопасности на основе протокола SOAP. ASP.NET совместно со службами IIS обеспечивает несколько вариантов проверки подлинности и авторизации. Можно также создать настраиваемые параметры проверки подлинности, например, использовать заголовки SOAP. Дополнительно ASP.NET предлагает возможность, называемую олицетворение, делать запросы с использованием учетных данных клиента. Дополнительные сведения об использовании олицетворения см. в разделе Олицетворение ASP.NET.

В этом разделе приводятся сводные данные о параметрах авторизации и проверки подлинности, доступных для веб-служб, построенных с помощью ASP.NET. Дополнительные сведения о параметрах безопасности, доступных для веб-приложений ASP.NET, см. в разделах Безопасность веб-приложений ASP.NET и Построение безопасных приложений ASP.NET. Проверка подлинности, авторизация и безопасное взаимодействие.

Дополнительные сведения о доступе к удаленным ресурсам из приложений, основанных на ASP.NET, см. в разделах «Модель олицетворения или делегирования» и «Модель доверенной подсистемы» главы 3 документа Построение безопасных приложений ASP.NET.

Параметры проверки подлинности для XML-веб-служб

Для веб-служб, созданных с помощью ASP.NET, предусмотрено несколько вариантов проверки подлинности клиентов, поэтому основной вопрос звучит так: какой вариант выбрать для конкретной веб-службы? Выбирая правильный вариант обеспечения безопасности, среди прочего разработчик должен решить, какой уровень безопасности и производительности требуется. Для некоторых веб-служб критически важно, чтобы учетные данные клиента передавались по сети в зашифрованном виде, поэтому важен алгоритм, шифрующий учетные данные клиента. Например, разработчик, создающий веб-службу, обрабатывающую данные кредитных карточек, будет гораздо больше заботиться о защите учетных данных клиента от похищения, чем о дополнительных накладных расходах, связанных с шифрованием данных кредитных карточек.

В следующей таблице представлена сводка по параметрам проверки подлинности, доступным для веб-служб, построенных с помощью ASP.NET. Параметры, перед которыми указано слово Windows, относятся к параметрам проверки подлинности Microsoft Windows, доступным для веб-служб, созданных с помощью ASP.NET.

Сводка вариантов проверки подлинности

Вариант проверки подлинности Описание

Windows - Обычная

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

Windows - Обычная по SSL

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

Windows - Дайджест

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

Windows - Встроенная проверка подлинности Windows

Использует NTLM или Kerberos. Используется криптографический обмен с веб-браузером Microsoft Internet Explorer пользователя.

Windows - Сертификаты клиента

Используйте для безопасной идентификации клиентов в интернет-сценариях и сценариях интрасети. Требуется, чтобы каждый клиент получил сертификат от взаимно доверенного центра сертификации. Дополнительно сертификаты могут сопоставляться учетным записям пользователя, которые используются службами IIS для доступа к веб-службе.

Формы

Не поддерживается веб-службами. Это система, с помощью которой запросы, не прошедшие проверку подлинности, перенаправляются на форму HTML с помощью перенаправления со стороны клиента HTTP. Большинство клиентов веб-служб не захотят предоставлять учетные данные с помощью пользовательского интерфейса; если требуется использовать проверку подлинности с формами, необходимо придумать обходной способ.

Заголовки SOAP – Настраиваемая

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

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

Проверка подлинности Windows

Как службы IIS, так и ASP.NET обеспечивают поддержку проверки подлинности для веб-приложений, включая веб-службы, с использованием безопасности, встроенной в ОС Windows. Windows обеспечивает три варианта проверки подлинности: обычная, дайджест и встроенная проверка подлинности Windows. Кроме того, каждый вариант может использоваться с протоколом SSL. Так как во всех предлагаемых ОС Windows вариантах проверки подлинности, кроме обычной, данные в той или иной форме шифруются, дополнительный уровень шифрования, предлагаемый протоколом SSL, обычно используется только с вариантами "Обычная" и "Сертификаты клиента".

Независимо от используемого варианта проверки подлинности Windows, процедуры настройки веб-службы и клиента веб-службы аналогичны. Дополнительные сведения см. в разделе Как настроить XML-веб-службу для проверки подлинности Windows. Для использования проверки подлинности Windows не требуется добавлять код в веб-службу, так как параметры проверки подлинности задаются в файле конфигурации и службах IIS. В клиент веб-службы необходимо добавить код для передачи учетных данный клиента в веб-службу.

Если в качестве составной части механизма проверки подлинности, используемого веб-службой, выбран протокол SSL, его необходимо настроить с помощью служб IIS для веб-приложения, в котором размещена веб-служба, или для самой веб-службы. Описание службы и, следовательно, прокси-классы, создаваемые из описания службы, будут отражать тот факт, что веб-служба использует протокол SSL (если доступ к описанию службы и странице справки службы производиться с использованием протокола SSL). URL-адрес веб-службы в описании службы будет иметь префикс "https". Дополнительные сведения о настройке SSL см. в документации по службам IIS.

Проверка подлинности с помощью сертификата клиента

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

Сертификат клиента можно получить в центре сертификации, который сам может быть веб-сервером или доверенной промежуточной инстанцией между клиентом и сервером. После того, как сертификат получен и веб-сервер настроен на прием сертификатов клиентов, клиент при вызове веб-службы может отправить сертификат клиента на веб-сервер по соединению SSL. Дополнительные сведения о сертификатах клиентов см. в документации по службам IIS. Дополнительные сведения о настройке проверки подлинности с помощью сертификатов клиентов см. в разделе Как настроить XML-веб-службу для проверки подлинности Windows.

Варианты авторизации для XML-веб-служб

Цель авторизации — определить, можно ли конкретному пользователю предоставить запрошенный тип доступа к определенному ресурсу. Существуют два основных способа авторизации доступа к определенному ресурсу: авторизация файла и авторизация URL-адреса. Авторизация файла может использоваться, если используется проверка подлинности Windows, так как разрешения задаются в службах IIS для отдельных файлов. Авторизация URL-адреса может применяться вместе с любым встроенным механизмом проверки подлинности, поддерживаемым ASP.NET. В авторизации URL-адреса настройка выполняется посредством файла конфигурации, в котором можно выборочно предоставлять или запрещать доступ пользователей к любым файлам, связанным с ASP.NET, включая ASMX-файлы.

Дополнительные сведения о настройки авторизации для отдельных файлов см. в документации служб IIS.

Дополнительные сведения о настройке авторизации с помощью файла конфигурации см. в разделе Авторизация в ASP.NET.

Настраиваемая проверка подлинности с помощью заголовков SOAP

Механизмы проверки подлинности Windows, включая сертификаты клиентов, используют транспорт HTTP, а протокол SOAP не зависит от транспорта. Веб-службы, созданные с помощью ASP.NET, используют протокол SOAP через HTTP, а также реализации HTTP-POST и HTTP-GET, которые возвращают документы XML, не являющиеся документами SOAP. Поэтому одной из причин создания настраиваемого механизма проверки подлинности является разделение проверки подлинности и транспорта. Этого можно добиться, передавая учетные данные для проверки подлинности в заголовке SOAP.

Заголовки SOAP — отличный способ передачи вне полосы или передачи информации, не связанной с семантикой веб-службы. В отличие от элемента Body сообщения SOAP, который содержит входные и выходные параметры для работы веб-службы, обрабатываемые методом веб-службы, элемент Header является необязательным и, таким образом, может обрабатываться инфраструктурой. То есть, обрабатываться инфраструктурой, разработанной для обеспечения настраиваемого механизма проверки подлинности.

Описание одного из способов использования заголовков SOAP для проверки подлинности см. в разделе Как выполнять нестандартную проверку подлинности с использованием заголовков SOAP.

Чтобы использовать заголовки SOAP для проверки подлинности, клиент веб-службы должен передавать свои учетные данные в веб-службу, добавляя ожидаемый заголовок SOAP в запрос SOAP и занося в этот заголовок учетные данные клиента. Чтобы использовать проверку подлинности с заголовками SOAP, веб-служба должна выполнить две операции: указать, что она ожидает заголовок SOAP, содержащий учетные данные для проверки подлинности, и авторизовать доступ клиента к веб-службе.

См. также

Задачи

Как настроить XML-веб-службу для проверки подлинности Windows
Как выполнять нестандартную проверку подлинности с использованием заголовков SOAP

Справочник

NetworkCredential
CredentialCache
X509Certificate

Другие ресурсы

Безопасность веб-приложений ASP.NET
Построение XML-веб-служб с помощью ASP.NET