Олицетворение и делегирование клиента

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

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

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

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

Реализация олицетворения

Олицетворение требует участия как клиента, так и сервера (а в некоторых случаях системных администраторов). Клиент должен указать готовность разрешить серверу использовать свое удостоверение, а сервер должен явно предположить, что удостоверение клиента должно быть программно. Дополнительные сведения см. в разделах " Требования на стороне клиента для олицетворения и требования на стороне сервера для олицетворения".

Административные требования для олицетворения Delegate-Level

Чтобы эффективно использовать наиболее мощную форму олицетворения, делегирование, являющееся олицетворением клиентов по сети, учетные записи пользователей клиента и сервера должны быть правильно настроены в службе Active Directory для его поддержки (в дополнение к центру предоставления клиента для выполнения олицетворения на уровне делегата) следующим образом:

  • Удостоверение сервера должно быть отмечено как "Доверенный для делегирования" в службе Active Directory.
  • Удостоверение клиента не должно быть отмечено как "Учетная запись является конфиденциальной и не может быть делегировано" в службе Active Directory.

Эти функции конфигурации дают администратору домена высокий уровень контроля над делегированием, что желательно, учитывая степень доверия (и, следовательно, риск безопасности). Дополнительные сведения о делегировании см. в разделе "Делегирование и олицетворение".

Маскировочное

Наряду с центром, клиент предоставляет сервер через уровень олицетворения, возможность маскировки сервера в значительной степени определяет, как будет вести себя олицетворение. Маскировка влияет на то, какое удостоверение фактически представлено сервером при выполнении вызовов от имени клиента — собственного или собственного клиента. Дополнительные сведения см. в разделе "Маскировка".

Влияние на производительность

Олицетворение может значительно повлиять на производительность и масштабирование. Как правило, более дорого олицетворять клиента при вызове, чем делать звонок напрямую. Ниже приведены некоторые из вопросов, которые следует рассмотреть.

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

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

Очереди компонентов

Компоненты очереди не поддерживают олицетворение. Когда клиент выполняет вызов к объекту в очереди, вызов выполняется в средство записи, который упаковывают его как часть сообщения на сервер. Затем прослушиватель считывает сообщение из очереди и передает его проигрывателю, который вызывает фактический серверный компонент и вызывает тот же вызов метода. Таким образом, когда сервер получает вызов, исходный маркер клиента недоступен через олицетворение. Однако безопасность на основе ролей по-прежнему применяется, а программная безопасность с помощью интерфейса ISecurityCallContext будет работать. Дополнительные сведения см. в разделе "Безопасность компонентов в очереди".

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

Безопасность приложений библиотеки

Многоуровневая безопасность приложений

Программная безопасность компонентов

Администрирование безопасности на основе ролей

Использование политики ограниченного использования программного обеспечения в COM+