| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Статьи:: .NET Framework :: Учебник по ASP.NET :: Имперсонация и делегирование в ASP.NET (ASP.NET delegation and impersonation)
Имперсонация и делегирование в ASP.NET (ASP.NET delegation and impersonation)
Источник: http://stump-workshop.blogspot.com/ Эта тема будет интересна тем, кто разрабатывает многоуровневые корпоративные .Net приложения. Вот такая узкая и скучная тема.Итак, те самые парни, о которых я сказал выше, всегда озабочены тем, чтобы пользователям не приходилось постоянно вводить логин / пароль при входе в различные приложения. Потому что пользователи грамотные, и они хотят чтобы «один раз ввели пароль при входе в windows, и он потом везде использовался». И я их в этом целиком и полностью поддерживаю. Когда у нас есть такая замечательная вещь, как Windows Integrated Authentication, мы несомненно должны ее использовать. Но это еще не все. В ASP.NET существуют такие мощные механизмы, как имперсонация (impersonation) и делегирование (delegation), о которых я хочу поговорить. Но прежде, давайте рассмотрим, каким образом .net web приложения исполняются под IIS. Как известно на одном сервере IIS могут быть развернуто несколько web сайтов
(только не под XP и IIS5), а на каждом сайте может выполняться несколько web
приложений. Причем это могут быть разные приложения: .Net, ISAPI или скриптовые.
Мы будем говорить только о .Net приложениях. Для .Net приложения нужен хост. И
поэтому IIS запускает специальный серверный процесс, который служит хостом для
CLR. В случае IIS 5 этот процесс называется aspnet_wp.exe, а IIS6 использует
процесс w3wp.exe. В этом рабочем процессе и создаются домены приложений (AppDomain)
для .Net web приложений. Каждое web приложение исполняется в своем AppDomain.
Когда приложение завершается соответствующий AppDomain выгружается. Рабочий
процесс IIS исполняется под определенной учетной записью. Для IIS5 это может
быть локальная учетная запись ASPNET или SYSTEM. Настраивается это в файле
machine.config в секции
<identity impersonate="true" /> Кроме того, вам необходимо в свойствах web каталога в консоли IIS включить режим “Integrated Windows Authentication” (вкладка “Directory security”). Теперь в коде aspx страницы мы можем узнать текущего пользователя вот так: Context.User.Identity.Name Либо вот так, результат будет аналогичный: Thread.CurrentPrincipal.Identity.Name Теперь мы, к примеру, можем узнать, состоит ли данный пользователь в той или иной группе:
System.Threading.Thread.CurrentPrincipal.IsInRole("Power Users");
Кроме того, все обращения к ресурсам, которые требуют авторизации (NTFS, реестр, Event Log и т.д.) будут производиться от имени пользователя пославшего web запрос. Вот, пожалуй, и все об имперсонации в ASP.NET, более подробные сведения можно почерпнуть в MSDN. Однако у этой темы есть интересное продолжение - это механизм делегирования. Рассмотрим, к примеру, систему, в которой различные уровни (tiers) разнесены по разным физическим серверам (см. рисунок).
<identity impersonate="true" />
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
Это означает, что должна использоваться Windows аутентификация, имперсонация должна быть включена, и анонимный доступ запрещен. Кроме того, следует в свойствах web каталога приложения на вкладке “Directory Security” следует включить флаг “Integrated Windows authentication”. Теперь если вы разместите на aspx странице вот вакой код вызова web сервиса: EchoService echo = new EchoService(); echo.Credentials = System.Net.CredentialCache.DefaultCredentials; try { lbAnswer.Text = echo.Ask(TextBox1.Text); } catch(Exception ex) { lbAnswer.Text = ex.ToString(); } Вы задействуете механизм делегации. CredentialCache.DefaultCredentials вернет удостоверения (credentials) клиента вызвавшего aspx страницу и эти удостоверения будут переданы при вызове метода Ask() web сервиса. Здесь я изложил в самой краткой форме суть понятий имперсонации и делегирования в ASP.NET, а также то, как они могут быть использованы и как настроить environment для их использования. Однако тема далеко не исчерпана. Существуют различные сценарии использования делегирования. Существуют сценарии, когда делегирования надо избежать. Существует масса нюансов при настройке серверов и приложений для делегирования. Для тех, кто обладает пытливым умом, либо просто заинтересовался данным вопросом, пара ссылок по теме: How to configure an ASP.NET application for a delegation scenario Troubleshooting Kerberos Delegation Рубрика: Учебник по ASP.NET
Подгрузка через AJAX HTML-кода, содержащег....
При разработке CMS S.Builder наша команда активно использовала AJAX. Теперь вот решили поделиться накопленным опытом. Начнем с этого хабратопика. Не буду здесь затрагивать различные фреймворки и библиотеки. Свой код всегда роднее. Для работы с AJAX-ом в S.Builder написана библиотека sbAJAX. Можете качать и пользоваться :). В этом файле есть функция sbEvalJS. Для тех, кто не знает, объясню. При подгрузке через AJAX и вставке на страницу HTML-кода, содержащего JavaScript, JavaScript выполняться не будет или полезут баги. Эта функция как раз решает поставленную задачу.
Подробнее... |
Рубрика: AJAX
| Добавлено: 19.11.2008
Обзор нового релиза самой мощной Ajax библ....
Хотя наш обзор немного запоздал, оригинальный Dojo 1.2 вышел в релизной версии ещё 6-го октября, но сейчас мы наверстаем упущенное. И так, Dojo Toolkit — это самая мощная и гибкая ajax-библиотека из всех, что есть на рынке, она активно развивается и имеет большое комьюнити. Кстати, это самое комьюнити, совместно с компанией Sitepen, имеет ещё несколько проектов, среди которых и Cometd и некоторые другие, не менее интересные, о которых мы скоро вам расскажем. Сегодня же все внимание на флагманский продукт — Dojo 1.2.
Подробнее... |
Рубрика: AJAX
| Добавлено: 19.11.2008
Firebug 1.3 и 1.4 alpha — что нового и инт....
Если вы профессиональный веб-разработчик и постоянно имеете дело с разработкой и отладкой сложных AJAX приложений, то наверняка знаете и используете Firebug — плагин для браузера Firefox, предназначенный для отладки и исследования веб-приложений. Текущая его версия, 1.2х достаточно стабильная и функциональна, чтобы помочь в 99% проблем, которые могут возникнуть при разработке. Но и этот инструмент не лишён если не недостатков, то некоторых фич, которые могли бы облегчить работу. И даже идеальный инструмент можно сделать ещё более идеальным, как бы это не звучало.
Подробнее... |
Рубрика: Вебмастеру
| Добавлено: 19.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|