Доступ к базам данных на основе WEB-технологий (C#)
Доступ к базам данных на основе WEB-технологий (C#) Исполняющая среда ASP.NET Чтобы использовать ASP.NET для Web-приложений в клиентской системе, необходим простой Web-браузер. Вы можете применять Internet Explorer, Opera, Netscape Navigator, Firefox или любой другой Web-браузер, поддерживающий HTML. При этом устанавливать платформу .NET в системе клиента не нужно. В серверных системах исполняющая среда ASP.NET должна быть инсталлирована. Если в вашей системе установлена служба Internet Information Services (IIS), сервер сконфигурирует исполняющую среду ASP.NET во время инсталляции платформы .NET Framework. В процессе разработки нет необходимости работать с IIS, поскольку Visual Studio имеет собственную среду ASP.NET Web Development Server, подходящую для тестирования и отладки приложений.
Давайте рассмотрим типичный Web-запрос, поступающий от браузера, чтобы показать, как работает исполняющая среда ASPNET. Допустим, клиент запрашивает на сервере файл default .aspx. Все Web-страницы ASP.NET обычно имеют расширение файла .aspx. Поскольку это расширение файла зарегистрировано в IIS, т.е. известно среде ASP.NET Web Development Server, в действие вступает исполняющая среда ASP.NET и рабочий процесс ASP.NET В момент поступления первого запроса на файл default.aspx запускается синтаксический анализатор ASP.NET, компилятор компилирует файл вместе с файлом С#, который связан с файлом .aspx, после чего создается сборка. Эта сборка затем компилируется в "родной" код компилятором JIT исполняющей среды .NET. Сборка содержит класс Page, который вызывается для возврата HTML-кода клиенту. После этого производится уничтожение объекта Page. Сборка хранится для последующих запросов, так что компилировать ее заново нет необходимости.
Создание простой WEB- страницы 1. Создайте новый Web-сайт, выбрав в Visual Studio пункт меню FileNewWeb Site (ФайлНовыйWeb-сайт). В диалоговом окне New Web Site (Новый Web-сайт), показанном на рис. 19.2, в качестве языка (комбинированное окно списка Language (Язык)) выберите Visual C#, а в комбинированном окне списка Location (Расположение) — элемент File System (Файловая система). При выборе расположения HTTP будет использоваться IIS и будет создан виртуальный каталог. (Выбор файловой системы влияет на используемую локальную файловую систему.) Присвойте Web-сайту имя EventRegistrationWeb.
2. После того как Web-сайт будет создан, в окне редактора будет открыт файл default.aspx. В одной части этого редактора будет показано окно Source View (Представление исходного кода), в другой — Design View (Представление проекта).
Система сгенерировала для нас заготовку сайта. Откорректируем ее так, как нам это необходимо: - Изменим название – пусть это будет “Простая WEB-страница”. Для этого нужно открыть автоматически сгенерированную для нас страницу “Site.master”. И заменить там название.
На мастер-странице, кроме заголовка имеется также меню-навигатор (NavigationMenu). Система создала для нас 2 пункта меню – “Home” и “About”. Изменим их. Пусть это будут “Старт” и “О программе”. Для этого сначала выберем NavigationMenu (справа откроется страница свойств этого элемента). Найдем свойство “Items”, выберем его и щелкнем по кнопке . Откроется окно редактирования пунктов меню. Для нас важны 3 свойства: NavigateUrl – переход на какую страницу будет совершен при выборе данного пункта меню Text – наименование пункта меню, которое видит пользователь Value – “значение” данного пункта меню, с которым работает программа.
Рекомендуется всегда использовать в программном коде свойство “Value”, а не “Text”. Это обеспечивает независимость программного кода от внешнего представления элемента на экране. Изменим значение свойства “Text” для пункта меню “Home” на “Старт” и для пункта меню “About” на “О программе”. На странице Site.master имеется еще один элемент – HeadLoginView. Он предназначен для обеспечения парольного входа на сайт. Этим элементом мы займемся немного позже.
Вернемся на страницу “Default.aspx”. Все изменения, которые были внесены в “Master” отразилось и здесь. Обратим внимание, что откорректировать эти значения на станицу “Default” нельзя – они общие для всех страниц, построенных на основе нашей мастер-странице. Удалим на этой странице рекламное предложение компании Microsoft посетить сайт по ASP или сайт с документацией по ASP. Теперь имеем:
Теперь откроем автоматически сгенерированную страницу “About.aspx” Откорректируем эту страницу, например так:
Запустим наш WEB-сайт:
Перейдем на страницу “О программе”:
Итак, наш web-сайт запущен и работает. Теперь настало время поговорить о правилах аутентификации и авторизации web-приложений. Аутентификация в ASP.NET Большинство web-сайтов работают в режиме анонимного доступа. Они содержат информацию, которую могут просматривать все желающие, и поэтому не проводят аутентификацию пользователей. Web-приложения ASP.NET предоставляют анонимный доступ к серверным ресурсам посредством назначения учетной записи анонимному пользователю. По умолчанию учетная запись для анонимного доступа имеет имя в виде IUSER _ имя компьютера. ASP.NET исполняет web-приложения под учетной записью ASPNET. Это означает, что при выполнении задачи, не предусмотренной привилегиями пользователя (например, запись файла на диск), приложение получает отказ в доступе. Идентификация пользователей применяется в тех случаях, когда нужно предоставить доступ к разделам web -приложения только для определенных пользователей. Это может быть Internet -магазины, форумы, закрытые разделы в корпоративных Intranet -сайтах и так далее.
Безопасность в приложениях ASP.NET основана на трех операциях: Аутентификация - процесс идентификации пользователя для предоставления доступа к какому-то ресурсу приложения (разделу сайта, странице, базе данных, и т.д.). Аутентификация основана на проверке сведений о пользователе (например, имени и пароля); Авторизация - процесс предоставления доступа пользователю на основе данных аутентификации; Олицитворение (impersonalisation) - предоставление серверному процессу ASP.NET прав доступа клиента. Существует три способа аутентификации пользователей в приложениях ASP.NET: аутентификация Windows - применяется для идентификации и авторизации пользователей в зависимости от привилегий учетной записи пользователя. Работает аналогично обычным механизмам сетевой безопасности Windows и выполняется контроллером домена; аутентификация Forms - пользователь вводит логин и пароль в Web -форме, после чего авторизация происходит по списку пользователей, хранящемуся, например, в базе данных. Применяется на большинстве Internet-сайтов при регистрации в Inernet -магазинах, форумах, пр; аутентификация Passport - все пользователи имеют единое имя и пароль, используемые для сайтов, использующих данный тип авторизации. Пользователи регистрируются в службе Microsoft Passport.
Важно отметить, что аутентификация ASP.NET применяются только для web -форм (.aspx -файлы), контролов (.ascx -файды) и прочих ресурсов ASP.NET. HTML-файлы не входят в этот список. Для авторизации доступа к HTML -файлам нужно их зарегистрировать вручную! Тип аутентификации указывается в конфигурационном файле Web.config :
Аутентификация Windows Существует 4 типа аутентификации Windows : обычная ( basic ), краткая ( digest ), встроенная ( integated ) и на основе клиентских сертификатов SSL. Обычную и краткую аутентификацию применяют для идентификации имени пользователя и пароля, указываемом в диалоговом окне. Они хорошо работают в Internet , так как данные передаются по HTTP. Базовая аутентификация передает пароль и имя пользователя в кодировке Base64, которую легко раскодировать. Для повышения безопасности можно использовать базовую аутентификацию совместно с SSL. Базовую аутентификация поддерживают большинство браузеров. Краткая аутентификация является более безопасной, так как пароль шифруется по алгоритму MD5. Она поддерживается браузерами Internet Explorer 5.0 и выше, либо на клиентской машине должен быть установлен. NET Framework. Кроме этого, учетные записи пользователей должны храниться в Active Directory.
Встроенная аутентификация применяется для идентификации учетных записей Windows и не может применяться в Internet , так как клиент и сервер должны пройти проверку контроллером домена. При этом пароли по сети не передаются, что увеличивает безопасность приложения. Этот тип аутентификации блокируется файрволами и работает только с Internet Explorer. Встроенная аутентификации немного медленнее, чем базовая или краткая. Применение сертификатов SSL так же обычно применяется в Intranet , т.к. требует раздачи цифровых сертификатов. При этом типе аутентификации пользователям не нужно регистрироваться. Сертификаты можно сопоставить учетным записям пользователей в домене или Active Directory.
Для указания способа аутентификации нужно выполнить следующие действия: 1. Запустить диспетчер IIS 2. Щелкнуть правой кнопкой мыши по приложению и выбрать в контекстном меню Свойства. 3. В появившимся диалоге перейти на вкладку Безопасность каталога и нажать кнопку Изменить в разделе Анонимный доступ и проверка подлинности.
4. В диалоге Методы проверки подлинности указать тип аутентификации.
5. Указать права доступа к папке или отдельным файлам в папке Web -приложения. Обязательно нужно разрешить доступ для пользователя ASPNET.
Для поддержки URL-авторизации при Windows-аутентификации для защиты содержимого папок применяются Web.config файлы, находящиеся в этих папках. Структура файла такова (cимвол <*> означает всех пользователей):
Если мы хотим защитить он неаутентифицированных пользователей папку полностью (например, папку, содержащую формы для администрирования сайта), то нужно разместить в ней файл Web.config с таким содержанием (cимвол означает анонимных неавторизированных пользователей):
Приложение извлекает данные пользователей с помощью свойства Identity класса User. Это свойство возвращает объект, содержащий имя пользователя и роль. bool authenticated = User.Identity.IsAuthenticated ; string name = User.Identity.Name; bool admin = User.IsInRole("Admins"); Forms-аутентификация При использовании Forms-аутентификации запрос параметров регистрации (например, логина и пароля) происходит в web-форме. Регистрационная страница указывается в файле Web.config. При первом обращении к защищаемым страницам ASP.NET перенаправляет пользователя на страницу для ввода пароля. При успешной регистрации аутентификационные данные сохраняются в виде cookie и при повторном обращении к защищенным страницам регистрация не требуется. Для того, чтобы использовать Forms-аутентификацию в файле Web.config в корневой папке приложения нужно указать страницу для ввода пароля:
При попытке просмотра защищенной страницы ASP.NET проверяет, есть ли аутентификационных cookie в запросе. Если cookie нет, то запрос перенаправляется на страницу для регистрации, если есть - ASP.NET дешифрует cookie и извлекает из него регистрационную информацию. Аутентификации на основе ролей Для аутентификации на основе ролей применяется атрибут roles тега allow. Например, если мы хотим запретить доступ всем, кроме пользователей из группы Admin , мы должны вставить такие строки в файл Web.config.
Параметры аутентификации Если второй параметр функции RedirectFromLoginPage () равен false , то время жизни сеансового cookie , генерируемого ASP.NET , равно по умолчанию 30 минутам. Для изменения этого интервала служит параметр timeout тега forms в файле Web.config. Установим время действия аутентификации в 3 часа.
По умолчанию аутентификацонные cookie шифруются и проверяются. Уровень защиты можно указать через атрибут protection , значение по умолчанию которого All. Значение Validation предписывает только проверку cookie , а значение Encript - только шифрование. Полностью отключить защиту можно указав значение None. Отключать защиту имеет смысл если данные передаются по протоколу HTTPS.
Аутентификация Passport При аутентификации Passport пользователи могут входить на разные web -сайты пользуясь единым удостоверением службы Microsoft Passport. Это освобождает пользователя от регистрации на каждом сайте, а сами сайты получают сведения о пользователе из профиля, хранимого Microsoft.
Для использования Passport аутентификации в web -приложении нужно установить Passport SDK. Passport SDK предоставляется бесплатно для тестирования, но для коммерческого использования на сайте необходимо приобретать лицензию. При обращении к приложению с Passport аутентификацией проверяется наличие cookie с данные Passport. Если такого файла нет, пользователь перенаправляется на страницу для регистрации Passport. Для включения данного режима аутентификации в файле Web. config нужно указать следующее:
Получить доступ к сведениям о пользователе можно с помощью события PassportAuthentication _ OnAuthenticate в файле Global.asax : protected void PassportAuthentication_OnAuthenticate(Object sender, PassportAuthenticationEventArgs e) { System.Web.Security.PassportIdentity id = e.Identity; if(id.IsAuthenticated) { Session["PassportID"] = e.Identity.Name; Session["Name"] = e.Identity["FirstName"] + e.Identity["LastName":]; Session["Email"] = e.Identity["PrefferedEmail"]; } }
Мы будем пользоваться аутентификацией на основе Web-форм, причем в качестве хранилища учетных данных будет использоваться SQL – сервер. Для этих целей Microsoft создала специальную базу данных – aspnet. Рассмотрим эту базу подробно.
Table: aspnet_Applications
Основные таблицы.
Доступ к информации авторизации может осуществляться двояко – либо через сохраненные процедуры SQL-сервера, либо напрямую, через запросы с базе данных. Разумеется, основным является доступ через процедуры. Итак, вернемся к нашей программе. На странице “Site.Master” имеется элемент – HeadLoginView. В контекстном меню этого элемента имеется возможность запустить задачу администрирования WEB-сайта. Запустим эту задачу
В результате запускается ASP.NET Wed Site Administration Tool
Перейдем на закладку Provider и убедимся, что нашим поставщиком является AspNetSqlProvider. Для проверки работоспособности провайдера нажмем на ссылку “Test”. Произведенная проверка подтверждает работоспособность провайдера. Теперь перейдем на страницу Security.
Здесь у нас 2 возможности. Можно сконфигурировать систему безопасности используя Setup Wizard или вручную. Запустим Setup Wizard.
На странице приветствия нажмем “Next”.
На странице выбора метода доступа выбираем “From the internet” и жмем “Next” (От этого выбора зависит способ аутентификации – либо “Windows Forms” – именно этот метод мы на самом деле выбрали, либо аутентификацию через домен и учетные записи Windows.
Wizard предлагает нам сконфигурировать доступ к хранилищу данных через закладку “Provider Configuration” , что уже было сделано ранее. Жмем “Next” Далее визард просит определиться, будем ли мы использовать роли. Разрешаем использосание и жмем “Next”.
Так как мы разрешили использовать роли, визард предлагает их создать. Создаем 3 роли – “Managers”,”Sales” и “SiteAdmin”. Затем жмем “Next”.
Далее нам предлагается создать пользователей – создадим пользователя webadmin После нажатия “Create” визард подтверждает создание пользователя и возвращается на страницу позволяя создать 2-го, 3-его и т.д. пользователя. Ограничимся одним нажмем клавишу “Next”.
Далее необходимо определиться с правилами доступа. Определяем, что группа SiteAdmin имеет разрешение на доступ. Жмем Add This Rule/
Получаем сообщения о завершении работы визарда и нажмем “Finish” Итак, имеем 1 пользователя и 3 группы. Нажмем “Manage users”.
Выбрав пользователя “Webadmin” нажимаем “Edit roles” и в списке ролей выбираем роль “SiteAdmin”. Все. Работа с визардом завершена. Закрываем его.
Вернемся теперь снова к нашему приложению. Создадим простую страницу на которую будет перенаправляться пользователь, если он успешно аутентифицировался. Эта страница называется Sucsessful.aspx И расположена она в папке Authentificated. Теперь откорректируем страницу
Самое главное, что мы должны сделать – это определить страницу, на которую перенаправляется пользователь при успешной проверке. Это свойство DestinationPageUrl . Значение в нашем случае - ~/Authentificated/Sucsessful.aspx Запустим сайт и нажмем ссылку “Вход”. Мы попадем на страницу аутентификации. Сначала введем неправильные значения имени пользователя и пароля. Получим сообщение об ошибке:
Теперь еще раз, но с правильным именем пользователя и паролем Мы были перенаправлены на страницу Sucsessful.aspx, т.е система нас успешно аутентифицировала.
Мы можем также создавать новых пользователей:
Результат – пользователь успешно создан. При создании еще одного пользователя user02 сделаем ошибку при подтверждении пароля. Ошибка обнаружена и мы получили предупреждение. Исправим ошибку и завершим создание пользователя.
Создадим еще 2 простые страницы – Sales.aspx и Managers.aspx, поместив их, соответственно в папки Sales и Managers.
На страницу Sucsessful.aspx добавим 2 гиперссылки. Первая “Для продавцов” будет вести на страницу ~/Sales/Sales.aspx Вторая “Для руководителей” – на страницу ~/Managers/Managers.aspx соответственно. Заходим под именем сначала “user01”, затем “user02” и убеждаемся, что страница “Для продавцов” доступна для обоих пользователей:
И страница “Для руководителей” тоже.
Запустим администрирование Web-сайта и определим, что “user01” у нас относится к роли “Manager”, а “user02” – к роли “Sales”, а “webadmin” – роли “SiteAdmin”:
Далее на странице прав для папки “Managers” мы запретили доступ для роли “Sales” А на странице прав для папки “Sales” мы запретили доступ для роли “Managers”
Теперь войдем как “webadmin”. Этот пользователь может посетить обе страницы
“user01” может посетить только страницу “Для руководителей”
А “user02” - может посетить только страницу “Для продавцов”
При попытке посещения “не своей” страницы сайт автоматически перенаправляет пользователя на страницу аутентификации.
118-c#_dostup_k_bazam_na_osnove_web-tehnologiy.pptx
- Количество слайдов: 63