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

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

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

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

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

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

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

требования Администратор istrative для олицетворения на уровне делегата

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

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

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

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

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

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

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

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

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

Компоненты очереди

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

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

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

Безопасность приложений с несколькими уровнями

Безопасность программных компонентов

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

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