Использование олицетворения при обеспечении безопасности транспорта

Олицетворение — это возможность серверного приложения взять на себя удостоверение клиента. Обычно службы используют олицетворение при проверке доступа к ресурсам. Серверное приложение выполняется с использованием учетной записи службы, но когда сервер принимает клиентское подключение, он олицетворяет клиента для выполнения проверки доступа с использованием учетных данных клиента. Безопасность транспорта - это механизм, используемый как для передачи учетных данных, так и для обеспечения безопасности связи с использованием этих учетных данных. В этом разделе описывается использование безопасности транспорта в Windows Communication Foundation (WCF) с функцией олицетворения. Дополнительные сведения об олицетворении с помощью безопасности сообщений см. в разделе "Делегирование и олицетворение".

Пять уровней олицетворения

В безопасности транспорта используется пять уровней олицетворения, как описано в приведенной ниже таблице.

Уровень олицетворения Description
Нет Серверное приложение не пытается олицетворить клиент.
Анонимные Серверное приложение может выполнять проверки доступа с использованием учетных данных клиента, но не получает никакой информации об идентификации клиента. Использовать этот уровень олицетворения имеет смысл только при обмене данными на компьютере, например по именованным каналам. Если уровень Anonymous используется при удаленном подключении, он повышается до уровня олицетворения "Identify".
Выявление Серверное приложение знает идентификацию клиента и может выполнить проверку доступа с использованием учетных данных клиента, но не может олицетворить клиент. Определение — это уровень олицетворения по умолчанию, используемый с учетными данными SSPI в WCF, если поставщик токенов не предоставляет другой уровень олицетворения.
Impersonate Серверное приложение может получить доступ к ресурсам на компьютере-сервере в качестве клиента помимо выполнения проверок доступа. Серверное приложение не может получить доступ к ресурсам на удаленных компьютерах, используя идентификацию клиента, поскольку олицетворяемый маркер не имеет сетевых учетных данных.
Делегирование Уровень олицетворения "Delegate" предоставляет те же возможности, что уровень Impersonate, а также позволяет серверному приложению получить доступ к ресурсам на удаленных компьютерах с использованием идентификации клиента и передавать эту идентификацию другим приложениям.

Важно, чтобы учетная запись домена сервера была помечена как надежная для делегирования на контроллере домена, чтобы использовать эти дополнительные функции. Этот уровень олицетворения нельзя использовать с учетными записями домена клиента, отмеченными как конфиденциальные.

Уровни, наиболее часто используемые с безопасностью транспорта, являются Identify и Impersonate. Не рекомендуется использовать уровни None и Anonymous в стандартных ситуациях, большинство транспортов не поддерживает использование этих уровней с проверкой подлинности. Уровень Delegate - это функция с широкими возможностями, которую следует использовать осторожно. Разрешение на делегирование учетных записей следует предоставлять только доверенным серверным приложениям.

Для использования уровней Impersonate или Delegate необходимо, чтобы серверные приложения имели привилегию SeImpersonatePrivilege. Приложение имеет эту привилегию по умолчанию, если оно выполняется от имени учетной записи в группе "Администраторы" или от имени учетной записи с идентификатором безопасности службы (сетевая служба, локальная служба или локальная система). Для олицетворения не требуется проведения взаимной проверки подлинности клиента и сервера. Некоторые схемы проверки подлинности, поддерживающие олицетворение, такие как NTLM, нельзя использовать при проведении взаимной проверки подлинности.

Проблемы соответствия транспорта и олицетворения

Выбор транспорта в WCF влияет на возможные варианты олицетворения. В этом разделе описываются проблемы, влияющие на стандартные транспорты HTTP и именованных каналов в WCF. Пользовательские транспорты имеют свои собственные ограничения поддержки олицетворения.

Транспорт именованных каналов

К транспорту именованных каналов применяются следующие положения.

  • Транспорт именованных каналов предназначен для использования только на локальном компьютере. Транспорт именованных каналов в WCF явно запрещает подключения между компьютерами.

  • Именованные каналы невозможно использовать с уровнем олицетворения Impersonate или Delegate. Именованный канал не может обеспечить выполнение гарантии на компьютере на этих уровнях олицетворения.

Дополнительные сведения о именованных каналах см. в разделе "Выбор транспорта".

Транспорт HTTP

Привязки, использующие транспорт HTTP (WSHttpBinding и BasicHttpBinding) поддерживают несколько схем проверки подлинности, как описано в разделе "Общие сведения о проверке подлинности HTTP". Поддерживаемый уровень олицетворения зависит от схемы проверки подлинности. К транспорту HTTP применяются следующие положения.

  • Схема проверки подлинности Anonymous игнорирует олицетворение.

  • Схема Basic проверки подлинности поддерживает только Delegate уровень. Все более низкие уровни олицетворения обновляются.

  • Схема проверки подлинности Digest поддерживает только уровни Impersonate и Delegate.

  • Схема проверки подлинности NTLM, которую можно выбрать как прямо, так и посредством согласования, поддерживает только уровень Delegate на локальном компьютере.

  • Схема проверки подлинности Kerberos, которую можно выбрать только посредством согласования, используется на любом поддерживаемом уровне олицетворения.

Дополнительные сведения о транспорте HTTP см. в разделе "Выбор транспорта".

См. также