2012-06-09 4 views
0

Я администратор домена Active Directory, как получить токен доступа определенного пользователя домена? Я хочу использовать токен доступа этого пользователя для получения некоторых данных из общей папки, которая открывается только ему.Как получить токен доступа определенного пользователя домена?

ответ

1

Если пользователь вошел в систему, и вы хотите, чтобы Выдавать его, используя свой маркер, то этот процесс:

  1. Использование WTSEnumerateSessions чтобы получить список всех активных пользователей системы в цикле.

  2. Сравните с помощью PWTS_SESSION_INFO информацию, если пользователь является тем, что вы хотите.

  3. Если пользователь сопоставляет, то используйте WTSQueryUserToken, чтобы получить токен пользователя. Это Api необходимо идентификатор сеанса, который вы получите от PWTS_SESSION_INFO структур, которые вы получили в шаге 1, при вызове WTSEnumerateSessions

  4. Дублировать маркер с помощью DuplicateTokenEx, а затем использовать ImpersonateLoggedOnUser олицетворять этот пользователь.

  5. Скопируйте файлы и т.д. сделать работу

  6. RevertToSelf.

Example click here

Если пользователь не вошел в систему, и вы хотите, чтобы выдавать себя и делать свою работу, используя свои полномочия, то:

  1. Используйте LogonUser API, чтобы получить маркер и следовать с шага 4 из вышеприведенного варианта.
+0

Очень благодарен вам за такую ​​сложную проблему! Я попробую. – hsluoyz

+0

У меня есть некоторые вопросы .. WTSEnumerateSessions, похоже, используется для извлечения активных сеансов пользователя. Но как я могу быть уверен, что пользователь домена обращается к этой общей папке? Также этот метод не использует разрешение администратора моего домена, возможно ли получить его токен доступа без него? – hsluoyz

+0

Вы должны быть администратором на компьютере для выполнения задач администратора. API-интерфейс служб WTS предоставляет токен пользователя, вошедшего в систему на компьютере. Если пользователь не зарегистрирован, вы можете получить токен процесса, который выполняется как пользователь этого администратора. И затем Дублируйте токен и используйте его. Если пользователь не вошел в систему, а также не работает в качестве этого пользователя, вам необходимо узнать его учетные данные. Используя учетные данные, используя API LogonUser, вы получаете токен. Этим вы создаете новый токен. –

Смежные вопросы