powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Олицетворение и делегирование в приложениях ASP.NET
13 сообщений из 13, страница 1 из 1
Олицетворение и делегирование в приложениях ASP.NET
    #34036158
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!

Читая теорию про безопасность, олицетворения и делегирования, совсем запутался. Последнее, что прочел — здесь. Но не могу понять как все это работает.

Например, есть веб-приложение. Ставлю его под IIS. При вызове веб-приложения значение WindowsIdentity.GetCurrent().Name равно "имя_компьютера\ASPNET". Вопрос: как можно изменить WindowsIdentity? Если это невозможно, то как сделать по-другому?

Может есть пример, который наглядно покажет каким образом, например, IIS получает доступ к базе данных SQL Server'а, которая работает под другим именем? Только пожалуйста без теории, голова уже не варит.

Спасибо.
...
Рейтинг: 0 / 0
Олицетворение и делегирование в приложениях ASP.NET
    #34036189
gaidar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В web.config пишите:<identity impersonate="true" name="my_domain\my_username" password="my_password"/>После этого ASP.NET игнорирует вашу учетную запись (например гостевая запись пользователя из Интеренет) и использует учетную запись my_username, так, как будто бы это вы вошли под этой учетной записью. Т.е. ASP.NET выполняет аутентификацию в системе за вас и получает привилегии учетной записи, указанной в конфигурации.--
Гайдар Магдануров
E-Mail | Блог | Сайт

Difficult I do now, impossible will take a while...
...
Рейтинг: 0 / 0
Олицетворение и делегирование в приложениях ASP.NET
    #34036254
Аноним
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, gaidar, Вы писали:

G>В web.config пишите:<identity impersonate="true" name="my_domain\my_username" password="my_password"/>После этого ASP.NET игнорирует вашу учетную запись (например гостевая запись пользователя из Интеренет) и использует учетную запись my_username, так, как будто бы это вы вошли под этой учетной записью. Т.е. ASP.NET выполняет аутентификацию в системе за вас и получает привилегии учетной записи, указанной в конфигурации.

У меня установлен Windows XP Pro. После загрузки операционной системы я выбираю только имя — USER1 и не ввожу пароль.
Что делать, если нет пароля?

В web.config добавил:
...
<system.web>
<identity impersonate="true" userName="COMP1\USER1" password="" />
...

Получил сообщение об ошибке: Parser Error Message: Could not create Windows user token from the credentials specified in the config file. Error from the operating system 'Неопознанная ошибка' :(
...
Рейтинг: 0 / 0
Олицетворение и делегирование в приложениях ASP.NET
    #34038361
Gollum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, gaidar, Вы писали:

G>В web.config пишите:<identity impersonate="true" name="my_domain\my_username" password="my_password"/>После этого ASP.NET игнорирует вашу учетную запись (например гостевая запись пользователя из Интеренет) и использует учетную запись my_username, так, как будто бы это вы вошли под этой учетной записью. Т.е. ASP.NET выполняет аутентификацию в системе за вас и получает привилегии учетной записи, указанной в конфигурации.

Гайдар, по-моему ты что-то странное написал. Имперсонация — это вопрос под какой учетной записью будет работать само приложение, т.е. Thread.CurrentPrincipal. По умолчанию в Windows XP в IIS 5 это будет MACHINENAME\ASPNET. При этом в Context.User может по-прежнему быть что угодно, это зависит от механизмов аутентификации и авторизации, например приложение работает из-под MACHINENAME\ADMIN, но Context.User у тебя вполне может быть DOMAINNAME\VasyaPupkine.Декадентство — это лежать на пляже у Великого Блинского болота и смотреть телевизор. В смокингах.
...
Рейтинг: 0 / 0
Олицетворение и делегирование в приложениях ASP.NET
    #34039926
gaidar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Гайдар, по-моему ты что-то странное написал.

Жень, я все правильно написал. Я же и говорю, что ASP.NET будет работать под указаной учетной записью (на сервере). К клиенту никакого отношения это не имеет.
Может я нечетко выразился словами "вашу учетную запись" - я имел ввиду ту, которая настроена по умолчанию для процесса ASP.NET. Извиняюсь, если вызвало непонятки, хотя, мне кажется, все понятно :)--
Гайдар Магдануров
E-Mail | Блог | Сайт

Difficult I do now, impossible will take a while...
...
Рейтинг: 0 / 0
Олицетворение и делегирование в приложениях ASP.NET
    #34039927
Gollum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, gaidar, Вы писали:

G> > Гайдар, по-моему ты что-то странное написал.

G>Жень, я все правильно написал. Я же и говорю, что ASP.NET будет работать под указаной учетной записью (на сервере). К клиенту никакого отношения это не имеет.

А причем тут клиент? Я так понял что ты имел в виду что "как будто вы вошли под этой учетной записью" имеется в виду пользователь контекста веб-приложения и соответственно вход в это приложение. В общем, мне было неочевидно что ты имел в виду, сейчас разобрались вроде.
...
Рейтинг: 0 / 0
Олицетворение и делегирование в приложениях ASP.NET
    #34040094
gaidar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ладно, признаю, что я неясно выразился :).--
Гайдар Магдануров
E-Mail | Блог | Сайт

Difficult I do now, impossible will take a while...
...
Рейтинг: 0 / 0
Олицетворение и делегирование в приложениях ASP.NET
    #34040138
ekleiman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Позвольте вопрос: что вы имеете в виду под словом "олицетворение"? На английский это переводится как personification и такого термина в МСДН практичеки нет. Может быть, имелось в виду authentication? Тогда это переводится как идентификация, опознание, отождествление...
...
Рейтинг: 0 / 0
Олицетворение и делегирование в приложениях ASP.NET
    #34040146
ekleiman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините, отвечаю сам себе. Уже после посылки вопроса догадался заглянуть в цитируемую статью Керчера. Там после слова олицетворение дается термин из оригинала - impersonation. Но последнее означает подражание, а также
to be the impersonation of smth — быть воплощением чего-либо (согласно  Lingvo online). Так что возможно, не совсем удачный перевод. Впрочем, не берусь судить.
...
Рейтинг: 0 / 0
Олицетворение и делегирование в приложениях ASP.NET
    #34041653
stump
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, ekleiman, Вы писали:

E>Извините, отвечаю сам себе. Уже после посылки вопроса догадался заглянуть в цитируемую статью Керчера. Там после слова олицетворение дается термин из оригинала — impersonation. Но последнее означает подражание, а также
E> to be the impersonation of smth — быть воплощением чего-либо (согласно Lingvo online). Так что возможно, не совсем удачный перевод. Впрочем, не берусь судить.
Перевод олицетворение — impersonation используется во всех переводах статей MSDN
...
Рейтинг: 0 / 0
Олицетворение и делегирование в приложениях ASP.NET
    #34041756
mogadanez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, gaidar, Вы писали:

G>В web.config пишите:<identity impersonate="true" name="my_domain\my_username" password="my_password"/>После этого ASP.NET игнорирует вашу учетную запись (например гостевая запись пользователя из Интеренет) и использует учетную запись my_username, так, как будто бы это вы вошли под этой учетной записью. Т.е. ASP.NET выполняет аутентификацию в системе за вас и получает привилегии учетной записи, указанной в конфигурации.

а это поможет если нужно общаться с третьим сервером?
например если БД стоит на удаленном сервере, то обычная имперсонация не поможет, обращение к БД будет все равно от учетной записи ASPNET... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
Олицетворение и делегирование в приложениях ASP.NET
    #34041810
stump
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Аноним, Вы писали:

А>Доброго времени суток!

А>Читая теорию про безопасность, олицетворения и делегирования, совсем запутался. Последнее, что прочел — здесь. Но не могу понять как все это работает.

А>Например, есть веб-приложение. Ставлю его под IIS. При вызове веб-приложения значение WindowsIdentity.GetCurrent().Name равно "имя_компьютера\ASPNET". Вопрос: как можно изменить WindowsIdentity? Если это невозможно, то как сделать по-другому?

А>Может есть пример, который наглядно покажет каким образом, например, IIS получает доступ к базе данных SQL Server'а, которая работает под другим именем? Только пожалуйста без теории, голова уже не варит.

А>Спасибо.

Для ASP.NET существует механизм имперсонации (олицетворения, impersonation). По умолчанию он выключен. При этом весь ASP.Net код выполняется от имени учетной записи процесса asnet_wp.exe (рассматриваем вариант WinXP+IIS5.1, для Win2003 все по другому). Это можно увидеть запустив Windows Task Manager (Ctrl+Shift+Esc) и найти там процесс aspnet_wp.exe По умолчанию он выполняется от имени локальной учетной записи ASPNET. Можно использовать другую учетную запись. Это настраивается в файле mashine.config в ключе <processModel> атрибуты userName и password. В самом mashine.config подробно написано что в эти атрибуты можно писать.
Как включить имперсонацию?
Для ASP.NET приложения имперсонация включается добавлением в web.config приложения строки
<identity impersonate="true" />
При этом сам рабочий процесс aspnet_wp.exe продолжает исполняться от имени учетной записи указанной в в файле mashine.config в ключе <processModel>, а вот поток в котором обрабатывается web запрос будет исполняться от имени пользователя, который отправил запрос. При этом если в приложении используется не windows авторизация то это будет локальная учетная запись IUSR_ИМЯМАШИНЫ. Ее впрочем тоже можно изменить в окне свойств web папки IIS-а (вкладка Directory Security).
Если в web.config мы указываем
<identity impersonate="true" name="domain\username" password="password"/>то в отличие от предыдущего варианта, все запросы будут обрабатываться от имени указанной учетной записи.

На что влияет имперсонация?
Очень на многое. Если у вас есть код который обращается к базам данных, файлам и каталогам, сетевым ресурсам, Active Directory, системному логу сообщений, реестру Windows и т.д. и т.п. Т.е. там где проверяются права доступа. Особенно если ваш код пытается получить доступ к ресурсам, расположенным на других компьютерах. Все перечисленные учетные записи: SYSTEM, ASPNET, IUSER_xxx — являются локальными, и следовательно ваш код не сможет получить доступ к таким ресурсам.
...
Рейтинг: 0 / 0
Олицетворение и делегирование в приложениях ASP.NET
    #34042367
stump
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, mogadanez, Вы писали:

M>Здравствуйте, gaidar, Вы писали:

G>>В web.config пишите:<identity impersonate="true" name="my_domain\my_username" password="my_password"/>После этого ASP.NET игнорирует вашу учетную запись (например гостевая запись пользователя из Интеренет) и использует учетную запись my_username, так, как будто бы это вы вошли под этой учетной записью. Т.е. ASP.NET выполняет аутентификацию в системе за вас и получает привилегии учетной записи, указанной в конфигурации.

M>а это поможет если нужно общаться с третьим сервером?
M>например если БД стоит на удаленном сервере, то обычная имперсонация не поможет, обращение к БД будет все равно от учетной записи ASPNET

Поможет. Если в строке соединения будет "Trusted_Connection=True", если "my_domain\my_username" действительно учетная запись доменного пользоватя, если сервер БД и учетная запись в одном домене или их домены в трастовых отношениях, если на SQL сервере включена windows аутентификация
Иначе надо прописывать имя пользователя и пароль в строке соединения и исползовать SQL аутентификацию на сервере.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Олицетворение и делегирование в приложениях ASP.NET
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]