У меня есть следующий сценарий, в котором я планирую использовать проверку подлинности 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) Из кода я обнаружил, что «А» аутентифицирован, поэтому я пойду и заберу его роли. «Роль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.
Если вы достигли этой точки, спасибо за чтение! Я хотел бы знать, возможно ли это и кажется ли это достижимым или я слишком усложняю вещи.
Также предложения о том, как я могу подключиться и где выполнять поиск ролей и переключение пользователей.
Большое спасибо!
ОБНОВЛЕНИЕ 1
@ Code Jammr, вы правы, не нужно делать сумасшедших вещей. Но я думаю, что мне все еще нужно заглянуть в HttpModules, ..
После нескольких тестов, поиска и т.д. ...
Я начал понимать разницу между этими объектами IIdentity:
HttpContext.Current.User.Identity
Thread.CurrentPrincipal.Identity
WindowsIdentity i2 = WindowsIdentity.GetCurrent ();
Я отправил еще один вопрос, чтобы помочь мне понять их:
Помогите понять олицетворение
Я думаю, что это отвечает на мой вопрос.