Неподдерживаемые сценарии
По различным причинам Windows Communication Foundation (WCF) не поддерживает некоторые сценарии безопасности. Например, в операционной системе Windows XP не реализованы протоколы проверки подлинности SSPI и Kerberos, поэтому WCF не поддерживает на этой платформе выполнение служб с проверкой подлинности Windows. При использовании WCF в ОС Windows XP Home Edition поддерживаются другие механизмы проверки подлинности, такие как проверка имени пользователя и пароля и встроенная проверка подлинности HTTP/HTTPS.
Сценарии олицетворения
Олицетворенное удостоверение может не работать, если клиенты совершают асинхронные вызовы
Если клиент WCF выполняет асинхронные вызовы службы WCF, используя проверку подлинности Windows при олицетворении, может иметь место проверка подлинности с удостоверением клиентского процесса, а не олицетворенным удостоверением.
Windows XP и включенные файлы Cookie маркера контекста безопасности
При выполнении следующих условий WCF не поддерживает олицетворение, и выдается исключение InvalidOperationException.
Операционной системой является Windows XP.
Режим проверки подлинности имеет результатом удостоверение Windows.
Свойству Impersonation объекта OperationBehaviorAttribute присвоено значение Required.
Создан маркер контекста безопасности с отслеживанием состояния (SCT) (по умолчанию создание отключено).
Маркер SCT с отслеживанием состояния создается только с использованием пользовательской привязки. Дополнительные сведения см. в разделе Как создать маркер контекста безопасности с отслеживанием состояния для безопасного сеанса.) В коде маркер включается путем создания элемента привязки безопасности (SymmetricSecurityBindingElement или AsymmetricSecurityBindingElement) с помощью метода System.ServiceModel.Channels.SecurityBindingElement.CreateSspiNegotiationBindingElement(System.Boolean) или System.ServiceModel.Channels.SecurityBindingElement.CreateSecureConversationBindingElement(System.ServiceModel.Channels.SecurityBindingElement,System.Boolean) и присвоения параметру requireCancellation значения false. Параметр относится к кэшированию маркера SCT. Задание значения false включает функцию маркера SCT с отслеживанием состояния.
Либо маркер включается в конфигурации путем создания привязки <customBinding>, последующего добавления элемента <security>, присвоения атрибуту authenticationMode значения SecureConversation и присвоения атрибуту requireSecurityContextCancellation значения true.
Примечание |
---|
Эти требования зависят от конкретной ситуации. Например, метод CreateKerberosBindingElement создает элемент привязки, который имеет результатом удостоверение Windows, однако не устанавливает маркер SCT. Поэтому его можно использовать с параметром Required в ОС Windows XP. |
Возможный конфликт ASP.NET
WCF и ASP.NET позволяют включать и отключать олицетворение. Если в ASP.NET размещается приложение WCF, может возникнуть конфликт между параметрами конфигурации WCF и ASP.NET. В случае конфликта приоритет имеет параметр WCF за исключением ситуации, когда свойству Impersonation присвоено значение NotAllowed. В этом случае приоритет имеет параметр олицетворения ASP.NET.
Возможный сбой загрузки сборки при олицетворении
Если олицетворенный контекст не имеет прав доступа для загрузки сборки и если это первая попытка загрузки этой сборки в среде CLR для этого домена приложения, в AppDomain кэшируется ошибка. Последующие попытки загрузки сборки (или сборок) также окажутся неудачными, даже если олицетворение отменено, а восстановленный контекст имеет права доступа для загрузки сборки. Это обусловлено тем, что в среде CLR не производится повторная попытка загрузки после изменения контекста пользователя. Для восстановления после сбоя необходимо повторно запустить домен приложения.
Примечание |
---|
Свойство AllowedImpersonationLevel класса WindowsClientCredential имеет значение по умолчанию Identification. В большинстве случаев контекст олицетворения уровня идентификации не имеет прав на загрузку дополнительных сборок. Это значение по умолчанию, поэтому необходимо учитывать это очень распространенное условие. Олицетворение на уровне идентификации также происходит, когда процесс олицетворения не имеет привилегии SeImpersonate. Дополнительные сведения см. в разделе Делегирование и олицетворение с использованием WCF. |
Для делегирования требуется согласование учетных данных
Для использования протокола проверки подлинности Kerberos с делегированием необходимо реализовать протокол Kerberos с согласованием учетных данных (иногда называется многоступенчатой проверкой подлинности Kerberos). Если проверка подлинности Kerberos реализована без согласования учетных данных (иногда называется одноступенчатой проверкой подлинности Kerberos), возникает исключение. Дополнительные сведения о реализации согласования учетных данных см. в разделе Отладка ошибок проверки подлинности Windows.
Шифрование
Алгоритм SHA-256 поддерживается только для симметричных ключей
WCF поддерживает различные алгоритмы шифрования и создания дайджеста подписи, которые можно указать с помощью набора алгоритмов в привязках, предоставляемых системой. С целью повышения уровня безопасности WCF поддерживает алгоритмы SHA 2 (Secure Hash Algorithm), в частности алгоритм SHA-256, для создания хэшей дайджестов подписи. Этот выпуск поддерживает алгоритм SHA-256 только для симметричных ключей (например, ключей Kerberos) и только в том случае, если для подписания сообщений не используется сертификат X.509. WCF не поддерживает подписи RSA (используемые в сертификатах X.509) с использованием хэша SHA-256 из-за отсутствия в настоящее время поддержки RSA-SHA256 в Платформа .NET Framework 3.0.
FIPS-совместимые хэши SHA-256 не поддерживаются
WCF не поддерживает FIPS-совместимые хэши SHA-256, поэтому наборы алгоритмов, использующие SHA-256, не поддерживаются в WCF в тех системах, в которых требуется применять FIPS-совместимые алгоритмы.
Возможен сбой FIPS-совместимых алгоритмов в случае изменения реестра
Включать и отключать FIPS-совместимые алгоритмы можно с помощью оснастки «Локальные параметры безопасности» консоли управления (MMC). Кроме того, можно получить доступ к этому параметру в реестре. Однако следует обратить внимание на то, что WCF не поддерживает задание параметра путем изменения реестра. Задание значения, отличного от 1 или 0, может привести к противоречивым результатам в среде CLR и операционной системе.
Ограничение FIPS-совместимого алгоритма шифрования AES
FIPS-совместимый алгоритм шифрования AES не работает в дуплексных обратных вызовах при олицетворении на уровне идентификации.
Сертификаты CNG/KSP в ОС Windows Server 2008
API криптографии следующего поколения (CNG) служит долгосрочной заменой CryptoAPI. Этот API доступен в неуправляемом коде в ОС Windows Vista и Windows Server 2008.
В операционных системах предыдущих версий (Windows Server 2003 и Windows XP) платформа .NET Framework 2.0 не распознает этот протокол и использует вместо него для обработки сертификатов CNG/KSP устаревший интерфейс CryptoApi. В ОС Windows Server 2008 и Windows Vista платформа .NET Framework 3.5 не поддерживает такие сертификаты — при их использовании возникает исключение.
Узнать, используется ли в сертификате KSP, можно двумя способами.
Сделайте платформозависимый вызов p/invoke функции CertGetCertificateContextProperty и проверьте свойство dwProvType возвращенного объекта CertGetCertificateContextProperty.
Используйте команду certutil в командной строке для запроса сертификатов. Дополнительные сведения см. в разделе Устранение неполадок, связанных с сертификатами, с помощью Certutil.
Сбой безопасности сообщений при использовании олицетворения ASP.NET и режима совместимости ASP.NET
WCF не поддерживает следующую комбинацию параметров, поскольку в этом случае может не выполняться проверка подлинности клиента.
Включено олицетворение ASP.NET. Для этого в файле Web.config атрибуту impersonate элемента <identity> присвоено значение true.
Включен режим совместимости ASP.NET путем присвоения атрибуту aspNetCompatibilityEnabled элемента <serviceHostingEnvironment> element значения true.
Используется режим безопасности сообщения.
Временное решение — отключить режим совместимости ASP.NET. Либо, если требуется режим совместимости ASP.NET, отключить функцию олицетворения ASP.NET и использовать вместо нее олицетворение, предусмотренное в WCF. Дополнительные сведения см. в разделе Делегирование и олицетворение с использованием WCF.
Ошибка литерального адреса IPv6
Если клиент и служба находятся на одном компьютере, а для службы используются литеральные адреса IPv6, происходит сбой запросов безопасности.
Литеральные адреса IPv6 можно использовать, если служба и клиент находятся на разных компьютерах.
Ошибка извлечения WSDL с федеративным доверием
В WCF требуется, чтобы для каждого узла в федеративной цепи доверия был точно один документ WSDL. Следует быть внимательным, чтобы не создать замкнутый цикл при задании конечных точек. Например, замкнутый цикл появляется при использовании загрузки WSDL федеративной цепи доверия с несколькими ссылками в одном документе WSDL. Типичной ситуацией, в которой может возникать эта проблема, служит федеративная служба, в которой сервер маркера безопасности и служба находятся в одном узле ServiceHost.
Ниже приведен пример службы с тремя адресами конечных точек:
https://localhost/CalculatorService/service (служба)
https://localhost/CalculatorService/issue_ticket (служба маркеров безопасности)
https://localhost/CalculatorService/mex (конечная точка метаданных)
В этом случае создается исключение.
Чтобы этот сценарий работал, необходимо разместить конечную точку issue_ticket
в каком-либо другом месте.
Возможная потеря атрибутов импорта WSDL
WCF теряет атрибуты элемента <wst:Claims> в шаблоне RST при выполнении импорта WSDL. Это происходит при импорте WSDL, если <Claims> заданы непосредственно в WSFederationHttpBinding.Security.Message.TokenRequestParameters или IssuedSecurityTokenRequestParameters.AdditionalRequestParameters вместо использования коллекций типов утверждений. Вследствие потери атрибутов при импорте привязка не выполняет надлежащим образом полный цикл через WSDL и поэтому является неправильной на стороне клиента.
Для устранения этой проблемы необходимо изменить привязку непосредственно в клиенте после выполнения импорта.
См. также
Основные понятия
Раскрытие информации
Повышение прав доступа
Отказ в обслуживании
Подделка
Атаки с повторением