Как войти в систему на сервере и запустить процесс, получив билет Kerberos - PullRequest
0 голосов
/ 13 сентября 2018

Как аутентификация и вход в систему работают в Windows с Kerberos? Чего я хочу добиться, так это войти в систему пользователя на сервере и запустить процесс для этого пользователя.

В качестве первого шага я создаю билет Kerberos на клиенте и отправляю его на сервер. На сервере я не знаю API для входа в систему пользователя, получившего свой билет. Конечно, я могу принять контекст безопасности, используя AcceptSecurityContext (SSPI), но это не инициирует вход в систему.

Я думаю, что некоторые реализации SSH для Windows делают именно это. Но я хочу знать, как и какой API они, вероятно, используют?

1 Ответ

0 голосов
/ 19 сентября 2018

Есть несколько способов сделать это.Вам нужно позвонить AcceptSecurityContext на тикете, чтобы получить контекст безопасности.Это то, что загружает все в Windows.Оттуда вы можете сделать пару разных вещей.

Обычно вы звоните ImpersonateSecurityContext, чтобы текущий поток понимал, какого пользователя он считает нужным.После этого вы можете позвонить QuerySecurityContextToken, чтобы получить дескриптор токена доступа Windows.С этой ручкой вы затем звоните CreateProcessAsUser.Вы также можете сказать ему, чтобы он выполнял такие вещи, как загрузка профиля, если это необходимо.

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

...