C # Как Windows выдавать себя за распределенную систему? - PullRequest
0 голосов
/ 28 октября 2019

У меня есть распределенная система, в которой я получаю доступ к некоторым внутренним сетевым ресурсам через проверку подлинности Windows:

  1. Запрос пользователя # 345 -> MyWebInterface -> SerializableQueue -> Worker # 123
  2. Рабочий # 123 обращается к ресурсу через WinAuth (в настоящее время под учетной записью службы, а не из учетной записи пользователя).
  3. Ответ пользователя # 345 <- MyWebInterface <- SerializableQueue <- Рабочий # 123 </li>

Проблема в шаг 2 - мне нужно выдать себя за пользователя # 345, а затем получить доступ к ресурсу. Это требование безопасности для использования этого ресурса.

Как следует сериализовать учетные данные пользователя, а затем десериализовать их на рабочем месте для выполнения олицетворения WinAuth?

1 Ответ

1 голос
/ 02 ноября 2019

Олицетворение не является встроенной функцией любой системы очередей, о которой я знаю - в частности, MSMQ не предлагает эту функцию.

Я использую сценарий, в котором у вас есть асинхронный сервис, требующий олицетворения длявнутренняя служба, которую вы не контролируете (например, общий ресурс SMB или другая служба, требующая аутентификации Windows). Если вы действительно управляете серверной службой, рассмотрите возможность предоставления вашей службе аутентификации как самой себя, а затем «действуйте» как реальный клиент.

Итак, в предположении, что вам нужно настоящее олицетворение, у вас есть несколько вариантов: S4U и C2WTS . Оба по сути являются способами использования SeTcbPrivilege для выдачи токенов для пользователей по имени пользователя (пароль не требуется). Хороший учебник для обеих технологий доступен на MSDN .

Если это не вызывает мгновенные сигналы предупреждения, следует заметить, что это будет очень важный кусок кода с точки зрения безопасности. SeTcbPrivilege сам по себе влияет только на локальную машину и поэтому является управляемым, но при использовании в сочетании с делегированием он может использоваться для доступа к удаленным ресурсам с теми же привилегиями, что и вызывающая сторона. По сути, вы используете свой сервис с правами «администратора домена», если это не ограничено и не спланировано очень тщательно.

...