https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx |
Локализация проектов. Аутентификация пользователей
Аутентификация и авторизация
Важная часть многих web-приложений — возможность контролировать доступ к ресурсам. Безопасность проекта вращается вокруг двух концепций — аутентификации и авторизации. Аутентификация — процесс определения личности пользователя. Авторизация — процесс определения прав пользователя на доступ к определенным ресурсам, на просмотр некоторых разделов, на возможность редактирования информации и так далее.
Для авторизации пользователь вводит пользовательское имя, под которым зарегистрирован(а), и пароль. После этого приложение определяет возможность доступа к ресурсам, а также может видоизменять как внешний вид с помощью тем, так и содержание генерируемых страниц. К примеру, в форуме записи могут показываться в виде дерева или линейно.
В ASP .NET 2.0 аутентификацией управляют с помощью службы Membership, которая позволяет определить различные виды членства на сайте. Информацию о членах можно хранить в различных местах — в базах данных, текстовых файлах или даже в учетных записях Windows. Конфигурировать членство можно индивидуально для каждого пользователя или на основе ролей с помощью сервиса Role Manager. Роли облегчают конфигурирование, так как можно создавать роли и потом добавлять пользователей к готовым ролям. Любому пользователю может принадлежать любое количество ролей.
По умолчанию службы используют провайдера AspNetSqlProvider. В таком случае ASP .NET автоматически создает базу данных ASPNETDB.MDF в директории проекта App_Data, когда запускается команда ASP.NET Configuration — или программно, или с помощью элементов управления группы Login задействуются службы Membership или Role Manager. Служба Membership также обеспечена провайдером, работающим с Active Directory. Role Manager может работать с провайдером, связанным с Authorization Manager операционной системы Widnows 2003. API, связанное со службой, позволяет настроить ее и на использование пользовательского провайдера.
Роли имеют определенные права. Например, администратор сайта может изменять настройки, редактировать членство других пользователей. Обычный пользователь с ролью Friend может просмотреть частные альбомы администратора, а неавторизованный пользователь — только публичные. Эта модель реализована в приложении Starter Kit. В этом приложении роли создаются во время первого запуска:
void Application_Start(object sender, EventArgs e) { SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(AppendQueryString); if (!Roles.RoleExists("Administrators")) Roles.CreateRole("Administrators"); if (!Roles.RoleExists("Friends")) Roles.CreateRole("Friends"); }
Из этого примера видно, что доступ к ролям можно получить с помощью класса Roles. Это не глобальная переменная, а статический класс, доступный из любого файла проекта. Создание роли выражается в том, что в базе ASPNETDB.MDF в таблице Roles появляется новая запись.
Создать пользователей и назначить им роли можно во встроенном приложении ASP .NET Configuration. Информация о пользователях хранится в таблицах aspnet_Users, aspnet_UsersInroles, aspnet_Membership. Пароли хранятся в зашифрованном с помощью хэш-функции виде. Даже администратор не может его подсмотреть. Пароль, который вводится в момент аутентификации, тоже хэшируется и сравнивается со значением в базе. Хранение в незашифрованном виде — это угроза безопасности.
Любой пользователь может зарегистрироваться, но при этом не получит роли и у него не будет новых прав, пока администратор не назначит ему роли.
В этом приложении можно также создавать правила доступа.
Настройки конфигурации служб Membership и Role Manager, конечно же, записываются в файл Web.config:
<roleManager enabled="true" />
Таким образом включается служба Role Manager.
Элемент authentication mode определяет способ аутентификации. Если это Forms, то свои имя и пароль пользователь вводит в форме. В локальной сети (интранет) можно аутентифицировать пользователей по их учетной записи, тогда его значение ставится как Windows.
С помощью элемента authentication запускается служба Membership:
<authentication mode="Forms"> <forms loginUrl ="Login.aspx"/> </authentication>
Другие доступные значения — Passport и None.
При значении Passport пользователи авторизуются с помощью паспорта от Microsoft.
При аутентификации с помощью форм пользователи получают доступ к страницам в зависимости от данных, введенных на форме. До входа на сайт пользователь считается анонимным и используется анонимная аутентификация. После того, как он прошел аутентификацию, пользователь получает файл-cookie, который используется для последующих запросов.
Всего у элемента forms 8 возможных атрибутов: