0

У меня есть следующий сценарий, когда я планирую использовать проверку подлинности 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

Я думаю, что это ответ на мой вопрос.

ответ

1

Существует несколько образцов кода для выполнения олицетворения. Большинство из них связаны с вызовами токенов и Win API. Но если вы действительно должны это сделать, я говорю об этом, не зная, какой тип вашего веб-сервера. IIS 6 или IIS7, тогда есть много примеров кода, которые помогут вам.

Вот одна ссылка для ya, которая в значительной степени дает вам отправную точку. http://msdn.microsoft.com/en-us/library/aa331755(v=vs.71).aspx

Вот ссылка на аутентификацию AD, и вам, возможно, нечего делать с ума. http://support.microsoft.com/kb/326340

Возможно, вы захотите изучить олицетворение asp.net, настройки пула приложений и т. Д., Чтобы узнать, есть ли лучший способ.

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