Могу ли я выдавать себя за пользователя в другом домене Active Directory в.NET?
У меня есть два домена Active Directory, A и B. Пользователи в домене A должны запускать приложение на своих рабочих столах для просмотра и управления ресурсом, расположенным на сервере в домене B. У каждого пользователя также есть учетная запись в домене B. Возможно ли это? олицетворять личность каждого пользователя домена B для программного выполнения операций с ресурсом домена B?
Пример рабочего процесса:
- Пользователь входит в домен А.
- Пользователь запускает настольное приложение.
- Пользователь указывает ресурс в домене B.
- Приложение запрашивает у пользователя учетные данные домена B.
- Приложение олицетворяет личность домена B пользователя для доступа к указанному ресурсу.
- Пользователь манипулирует ресурсом домена B с помощью приложения.
3 ответа
Я собираюсь говорить о Win32 API, но я почти уверен, что вы можете вызывать их из.NET. Проверьте http://pinvoke.net/.
Вам нужно вызвать API LogonUser, чтобы создать токен доступа, который представляет учетные данные домена B. пользователя.
Затем вы вызываете ImpersonateLoggedOnUser, передавая этот токен доступа. Вызывающий поток будет выдавать себя за учетные данные домена B, пока вы не выдадите за другой набор учетных данных или не вызовете API RevertToSelf.
Я думаю, само собой разумеется, что для успешного вызова LogonUser машине, на которой вы работаете, нужно будет доверять домену B.
Если ваш компьютер (который выполняет олицетворение) является членом домена, который не доверяет домену учетной записи пользователя, которую вы пытаетесь олицетворять, то олицетворение завершится неудачей. Любой, кто говорит иначе, я хотел бы видеть доказательства.
Проверьте этот вопрос, который охватывает вопросы олицетворения, в которых вы нуждаетесь.