Советы по подражанию Windows, но переход на другого пользователя - PullRequest
0 голосов
/ 09 апреля 2011

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

Я отправил еще один вопрос, чтобы помочь мне понять их: Помогите понять олицетворение

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

1 Ответ

1 голос
/ 09 апреля 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...