Опубликован: 13.07.2010 | Доступ: свободный | Студентов: 889 / 20 | Оценка: 4.40 / 4.20 | Длительность: 77:34:00
Самостоятельная работа 37:

Безопасность: аутентификация с помощью форм

< Самостоятельная работа 36 || Самостоятельная работа 37: 12345678

Упражнение 4. Создание хранилища удостоверений

SQL Server 2005 создает базу данных и работает с ней как с отдельным файлом с расширением .mdf. По умолчанию файлы баз данных размещаются в каталоге

C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data

Мы сами можем вручную создать файл базы данных для хранения удостоверений и добавить в нее таблицы с необходимыми полями. Но это может несогласоваться с механизмом API Membership, поскольку он ожидает базу данных определенной структуры. К тому же нужно будет прописывать в конфигурационном файле строку соединений с этой базой и другие конфигурационные параметры, необходимые для работы API Membership. Более простой вариант предусмотрели разработчики Visual Studio 2005, включив поддержку Membership в утилиту Web Site Administration Tool ( WAT ). Теперь база данных нужной структуры для хранения удостоверений будет создана автоматически при первом запуске WAT, если в конфигурационном файле прописана секция аутентификации форм.

  • Откройте файл web.config и удалите из него секцию <credentials> вместе с внесенными ранее пользователями и временно закомментируйте секцию авторизации. При этом должна остаться секция аутентификации форм

В результате конфигурационный файл должен стать таким

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <system.web>
    <compilation debug="true" />
    <authentication mode="Forms">
      <forms name="MyCookieName"
        loginUrl="MyLogin.aspx"
        defaultUrl="MyDefault.aspx"
        protection="All"
        timeout="20"
        path="/"
        requireSSL="false"
        slidingExpiration="true"
        cookieless="AutoDetect"
        domain=""
        enableCrossAppRedirects="false">
      </forms>
    </authentication>
    <!-- Временно закомментировали, чтобы не требовал регистрации
    <authorization>
      <deny users="?"/>
    </authorization>
    -->
  </system.web>
</configuration>
Листинг 37.13. Конфигурационный файл при хранении пользователей в БД Membership
  • Запустите утилиту WAT командой Website/ASP.NET Configuration и обратите внимание, как долго она запускается

Замечание. Эта утилита может не запускаться, если абсолютный путь к созданному проекту имеет пробелы или кириллицу. В этом случае переместите проект в другое место файловой системы компьютера.

  • В панели Solution Explorer щелкните на кнопке Refresh

Мы видим, что утилита WAT так долго запускалась потому, что добавила к проекту каталог App_Data (если до этого его еще не было) и создала в нем базу данных ASPNETDB.MDF, готовую для хранения удостоверений и согласованную с API Membership


  • В панели Solution Explorer двойным щелчком на файле ASPNETDB.MDF откройте соединение с этой базой данных и ознакомтесь в панели Server Explorer с ее структурой, типичной для SQL Server


Такой способ хранения удостоверений пользователей в локальной базе данных вместе с приложением очень удобен, поскольку позволяет перемещать сайт в любое место сервера или разворачивать на любом сервере без дополнительных настроек подключения SQL Server. Да и структуру базы данных утилита WAT создала такой, какая нужна системе API Membership. Это значит, что все классы Membership будут согласованы с хранилищем удостоверений.

Утилита WAT автоматически создает хранилище удостоверений только в том случае, если обнаружит в корневом конфигурационном файле секцию

<authentication mode="Forms">

Если на момент запуска утилиты WAT файл конфигурации в корневом каталоге приложения отсутствует или в нем нет секции аутентификации на основе форм, то утилита базу данных не создает.

Для того, чтобы проверить работоспособность созданной локальной базы данных, выполните следующее:

  • Запустите утилиту WAT командой Website/ASP.NET Configuration
  • На вкладке Home щелкните на гиперссылке Provider Configuration, чтобы перейти на вкладку Provider
  • На вкладке Provider щелкните на первой гиперссылке " Select a single provider for all site management data "
  • В отклике, сгенерированном административной страницей ManageConsolidatedProviders.aspx, щелкните на гиперссылке Test

В результате страница пришлет ответ, что созданная нами локальная база данных функционирует нормально.

Важно отметить, что хоть утилита WAT автоматически создала базу данных для поддержки именно аутентификации пользователей сайта, но эту базу мы можем расширять и для использования в других целях, добавляя в нее соответствующие таблицы и хранимые процедуры. Среда исполнения ASP.NET будет надежно защищать эту базу от постороннего вмешательства. Только нельзя удалять автоматически созданную инфраструктуру во избежании конфликтов с классами Membership.

Добавление в хранилище БД новых пользователей через утилиту WAT

На данном этапе мы рассмотрим интерактивный способ добавления пользователей с применением утилиты WAT. В дальнейшем можно будет создать свои административные страницы для программного добавления пользователей в это хранилище, используя классы Membership. При этом нужно помнить, что хранилище удостоверений будет размещаться на удаленном сервере и поддерживать его мы будем как удаленные пользователи либо через WAT, либо через собственные административные страницы, также хранящиеся на сервере.

Для создания новых аутентифицированных пользователей через утилиту WAT выполните следующее:

  • В панели Solution Explorer щелкните на пиктограмме ASP.NET Configuration, чтобы запустить утилиту WAT
  • Перейдите на вкладку Security и щелкните на гиперссылке Create user

Появится следующий отклик утилиты WAT

Сообщение на странице предлагает ввести имя пользователя, пароль с подтверждением, адрес электронной почты для автоматической отсылки пароля, вопрос и ответ для восстановления пароля на случай его утраты пользователем. При правильном ответе на вопрос пользователь может получить новый автоматически сгенерированный пароль по электронной почте.

В утилите за полем ввода пароля закреплен валидатор для контроля соблюдения требований к строгости пароля. По умолчанию настройка валидаторов пароля такая, что пароль должен иметь длину не менее 7 символов. Причем, как минимум один из символов должен быть неалфавитно-цифровым, например, символ &. Это обеспечивает минимально необходимую строгость пароля. Позднее мы рассмотрим, как в конфигурационном файле можно менять принятые по умолчанию настройки Membership, которые, в том числе, будут влиять и на поведение WAT.

  • Заполните поля страницы для добавления в хранилище одного пользователя со следующими характеристиками
User Name: admin
Password: Root&Root
Confirm Password: Root&Root
E-mail: Dialog-Service@List.ru
Security Question: У Вас продается славянский шкаф?
Security Answer: Шкаф уже продан, осталась только тумбочка!

и щелкните на кнопке Create User

После этого действия новый пользователь будет создан в базе данных.

  • В появившемся отклике щелкните на кнопке Continue, чтобы вернутся к интерфейсу добавления следующего пользователя, либо закройте WAT
< Самостоятельная работа 36 || Самостоятельная работа 37: 12345678