Временное предоставление повышенных прав администратора для кода ASP.NET - PullRequest
3 голосов
/ 11 марта 2010

Мы пытаемся запустить набор административных задач на сервере через консоль веб-администрирования. Консоль работает с олицетворением в качестве текущего пользователя, вошедшего в систему, и только администраторам на локальном компьютере разрешено входить в систему. Сейчас она работает в большинстве случаев, но у нас возникают проблемы при работе под UAC.

Первая проблема - это блокировка: похоже, что администраторы не получают роль «BUILTIN \ Administrators», даже если они являются администратором локального ящика. Это может помешать им даже попасть в консоль администратора, поскольку мы используем нотацию web.config <allow roles="BUILTIN\Administrators"> для указания безопасности. Я подозреваю, что единственными решениями здесь являются либо запуск приложения ASP.NET от имени SYSTEM, либо предоставление большего количества пользователей и более детальная проверка разрешений в коде. Есть еще идеи? Есть ли способ внедрить запрос на повышение прав во встроенную проверку разрешений ASP.NET?

Другая проблема заключается в том, что мы хотим запустить некоторые команды, требующие доступа администратора. Пользователь, посещающий сайт, является администратором и правильно имитирует, но когда мы порождаем процесс, он завершается неудачей из-за отсутствия прав администратора. Четкий ответ заключается в повышении в течение этой команды. Существуют решения, которые позволят мне временно подняться, выдав себя за конкретное имя пользователя и пароль, но я бы предпочел не спрашивать у уже проверенного пользователя его пароль. Есть ли какие-нибудь хитрости для поднятия текущего пользователя?

(Я могу понять, почему команда ASP.NET может попытаться сделать это сложно, чтобы веб-страницы не могли воспользоваться невидимым преимуществом администратора, посещающего веб-сайт ... но, безусловно, должен быть какой-то способ программирования объявить, что вашему коду необходимы полные права администратора, и, соответственно, предупредить администратора IIS о своих намерениях?)

Существует ряд ответов для приложений Windows Forms, таких как: Как повысить привилегии только при необходимости? и File.Exists, возвращающих false из общей сетевой папки но я надеюсь найти тот, который будет работать с ASP.NET ...

Спасибо Стив

1 Ответ

1 голос
/ 04 июня 2011

Нам удалось достичь «более высокого» уровня олицетворения от пользователя, который в настоящее время обращается к веб-сайту, включив сервер для делегирования в Active Directory. Согласно Microsoft, You can think of delegation as a more powerful form of impersonation, as it enables impersonation across a network. Возможно, вам не нужно переходить по сети, но это может решить ваши проблемы с безопасностью.

Вот несколько ресурсов по настройке делегирования, надеюсь, это поможет вам.

...