У меня есть следующий сценарий, когда я планирую использовать проверку подлинности Windows.Советы по Windows Олицетворение, но изменение на другого пользователя
1.1) У меня есть веб-сервер, который будет работать в домене.
1.2) Веб-сайт будет запускаться под учетными данными пользователя домена с набором настроенных разрешений (одному из них будет разрешен доступ к файловой системе, базе данных SQL-сервера и т. Д.).
1.3) Пользователи, посещающие веб-сайт, принадлежат одному домену, поэтому я планирую использовать проверку подлинности Windows.
Итак, на этом этапе аутентифицированный пользователь получит доступ к сайту, но я думаю, что из кода «CurrentUser» будет тем, под которым работает сайт.
Я хотел бы следующее.
2.1) Чтобы аутентифицировать пользователя, обратившись к сайту с помощью проверки подлинности Windows. (Контроллер домена будет отвечать за это).
2.2) Для запуска сайта под настроенным пользователем с шага 1.2. Таким образом, у него будут все разрешения.
2.3) Но я хотел бы знать начального пользователя, используемого для аутентификации (шаг 2.1).
Таким образом, я мог бы сделать следующее:
3.1) Пользователь «А» решает получить доступ к сайту, так как он принадлежит к тому же домену, что и веб-сервер, он проверяет подлинность успешно.
3.2) Из кода я обнаружил, что «A» аутентифицирован, поэтому я пойду и возьму его роли. «Роль1, Роль2, Роль3».
3.3) Затем я хочу, чтобы код запускался под пользователем, настроенным на шаге 1.2, но я назначу Принципалу все роли, полученные из 3.2.
Я подумал, что, возможно, я мог бы использовать олицетворение для этого.
4.1) Таким образом, пользователь «А» решает получить доступ к сайту и аутентифицироваться.
4.2) Сайт первоначально будет запускаться с учетными данными «A», поэтому «CurrentUser» будет «A».
4.3) Переключите пользователя (каким-то образом) обратно к одному из 1.2
4.4). Я мог бы получить все 4.1 настроенные роли.
4.5) Назначьте текущего принципала роли, полученные из 4.4.
Итак, в конце веб-сайт будет использовать аутентификацию Windows с олицетворением, но из кода я бы переключился на пользователя 1.2.
Если вы достигли этого момента, спасибо за чтение! Я хотел бы знать, возможно ли это, и если это кажется достижимым, или если я чрезмерна.
Также есть предложения о том, как я могу подключиться и где выполнять все функции поиска и переключения пользователей.
Большое спасибо!
UPDATE 1
@ Code Jammr, вы правы, нет необходимости делать какие-либо сумасшедшие вещи. Но я думаю, мне все еще нужно изучить HttpModules, ..
После нескольких тестов, поиска и т. Д.
Я начал понимать разницу между этими объектами IIdentity:
HttpContext.Current.User.Identity
Thread.CurrentPrincipal.Identity
WindowsIdentity i2 = WindowsIdentity.GetCurrent();
я отправил еще один вопрос, чтобы помочь мне понять их: Help understanding impersonation
Я думаю, что это ответ на мой вопрос.