вторник, 22 января 2013 г.

Настройка делегирования для IIS

Возьмем типовую задачу: пусть у нас есть asp - страничка, на которой выводятся некие данные из базы. Возникает вопрос авторизации на сервере БД. Удобнее всего использовать доменную авторизацию.
Это сильно упрощает администрирование как администрирование так и жизнь пользователям, которым достаточно запомнить свой доменный пароль а не держать список логинов и паролей  на каждую задачу.
    Итак, в вкратце схема выглядит так: пользователь заходит на сайт, представляется тем или иным способом, приложение имперсонируется и обращается к базе данных уже от имени подключившегося пользователя. Но это отлично работает если веб-сервер и база данных находятся на одном сервере. Если же веб-сервер обращается к удаленому ресурсу, то возникают проблемы. А именно:  реально пул приложений работает не от имени подключившегося пользователя, а от того имени, которое указано в настройках пула. А при обращении к ресурсу дополнительно указывается, что работа ведется от имени подключившегося пользователя. Собственно, этот процесс и называется делегированием.
    При обращении к локальным ресурсам это срабатывает, но при обращении к удаленным вступают в силу политики АД и идет проверка, а может ли этот пользователь работать от чужого имени.
    Итак, чтобы работало делегирование необходимо в первую очередь внести настройки в домен. 

    В теории, если верить Microsoft, то для этого достаточно настроить делегирование сервера. Для этого нужно в "Пользователях и компьютерах" АД выбрать веб-сервер, перейти в его свойства  и включить делегирование (полное или на конкретные службы). Подробно процесс описан здесь.
    На практике это не работает. Потому что проверяются права пользователя, непосредственно обратившегося к удаленному ресурсу, а не сервера, с которого произошло обращение. Значит нужно настроить делегирование для пользователя, от имени которого идет обращение. Делаем это в 2 этапа:
  1. Настройка пула приложений. Нужно сконфигурировать его для работы от имени конкретного пользователя домена. Для этого выбираем нужный пул, переходим в дополнительные параметры и задаем пользователя в пункте "Удостоверение".
  2. Настройка собственно прав пользователя. Опять во в "Пользователях и компьютерах" АД выбираем пользователя, заданного в предыдущем пункте и во вкладке "Делегирование" указываем на какую службу какого сервера это делегирование разрешено. Вот тут то и ожидает подвох: такой вкладки вполне может и не быть. Точнее почти наверняка не будет. Потому что она доступна только для тех пользователей, для которых задано имя участника-службы. Если вкладки нет, то задаем его так, как описано здесь. После чего настраиваем делегирование.
Теперь осталось подождать с какое то время, когда внесенные в АД изменения станут доступны. Сайт для работы через делегирование готов.

Похожие посты:

Комментариев нет:

Отправить комментарий