Если вам нужно получить пользователя из контроллера, используйте User свойства контроллера. Если вам это нужно с точки зрения, я бы заполнить то, что вам конкретно нужно в ViewData , или вы можете просто позвонить пользователю, как я думаю, что это свойство ViewPage .

Я нашел это User строительство, то есть User.Identity.Name или User.IsInRole(«Administrator») .

Public Shared Property Current () As Система.Сеть.HttpContext
члены системы.Сеть.HttpContext

резюме:
Возвращает или задает систему.Сеть.Объект HttpContext для текущего HTTP-запроса.

Возвращаемые Значения:
система.Сеть.HttpContext для текущего HTTP-запрос

вы можете получить имя пользователя в ASP.NET MVC4 вот так:

Я понимаю, что это действительно старый, но я только начинаю с ASP.NET MVC, поэтому я подумал, что засуну свои два цента в:

  • Request.IsAuthenticated говорит вам, если пользователь аутентифицирован.
  • Page.User.Identity дает вам идентификатор пользователя, вошедшего в систему.

Я не уверен, что это будет работать в ASP.NET MVC, но это стоит попробовать:)

вход в систему имя пользователя: System.Web.HttpContext.Current.User.Identity.Name

чтобы ссылаться на идентификатор пользователя, созданный с помощью простой аутентификации, встроенной в ASP.NET MVC 4 в контроллере для целей фильтрации (что полезно, если вы используете database first и Entity Framework 5 для создания Привязок Code-first, а ваши таблицы структурированы так, что используется внешний ключ к идентификатору пользователя), вы можете использовать

после добавления оператора using

но если вам нужно получить только идентификатор, вы можете использовать:

таким образом, вы можете получить непосредственно идентификатор пользователя:

вам просто нужно User.Identity.Name .

это приведет к текущему вошедшему в систему пользователю Windows.

для чего это стоит, в ASP.NET MVC 3 Вы можете просто использовать User, который возвращает пользователя для текущего запроса.

Если вы находитесь внутри своей страницы входа, например, в событии LoginUser_LoggedIn, Current.User.Identity.Name возвращает пустое значение, поэтому вы должны использовать yourLoginControlName.Имя пользователя свойство.

если вы работаете в Active Directory в интрасети, вот несколько советов:

(Windows Server 2012)

запуск всего, что говорит с AD на веб-сервере требует кучу изменений и терпения. Поскольку при запуске на веб-сервере против локального IIS / IIS Express он работает в удостоверении AppPool, поэтому вам нужно настроить его для олицетворения того, кто попадает на сайт.

как получить текущего вошедшего пользователя в active directory, когда ваш ASP.NET Приложение MVC работает на веб-сервере внутри сети:

вы должны обернуть любые вызовы, имеющие отношение к «контексту active directory» в следующем, чтобы он действовал как среда размещения для получения информации AD:

вы должны иметь impersonate значение true в файле web.config:

вы должны иметь проверку подлинности Windows в интернете.config:

Список учетных записей пользователей

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

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

Метод действия Index перечисляет всех пользователей, находящихся под управлением Identity, хотя на данный момент мы еще не создали ни одного пользователя. Важной частью этого примера является способ, с помощью которого мы получаем экземпляр класса AppUserManager, через который будем управлять информацией пользователей. В дальнейшем мы будем повторно использовать экземпляр класса AppUserManager в контроллере Admin, поэтому я создал отдельное свойство только для чтения UserManager, чтобы позже упростить код.

Сборка Microsoft.Owin.Host.SystemWeb добавляет вспомогательные методы расширения для класса HttpContext, одним из которых является GetOwinContext(), возвращающий объект контекста OWIN API для запроса (напомню, объект контекста реализует интерфейс IOwinContext). Сами по себе объекты IOwinContext не очень интересны в приложениях MVC, но они определяют другой метод расширения GetUserManager<T>, возвращающий экземпляр класса UserManager, используемый для управления пользователями.

В примере выше я вызвал метод GetUserManager(), передав в качестве обобщенного типа класс AppUserManager, который мы создали в предыдущей статье:

После того, как у нас появится экземпляр класса AppUserManager, мы можем начать создавать запросы к хранилищу данных. Свойство AppUserManager.Users возвращает перечисление объектов—экземпляров пользовательского класса AppUser, с которым можно работать используя LINQ.

В методе действия Index мы передаем значение свойства Users в метод View(), благодаря чему, в представлении можно будет использовать список пользователей. Следующий пример показывает содержимое файла представления Views/Admin/Index.cshtml, который вы можете создать щелкнув правой кнопкой мыши по имени метода действия в контроллере и выбрав команду Add View из контекстного меню.

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

Отображение пустого списка пользователей Identity

Мы добавили кнопку «Создать» в это представление (стилизованную с помощью bootstrap), которая будет отправлять команду методу действия Create контроллера Admin. Позже мы добавим этот метод действия для добавления пользователей.

Создание базы данных ASP.NET Identity

Платформа ASP.NET Identity не привязана к схеме базы данных SQL Server, в отличие от Membership API, но реляционное представление данных пользователей по-прежнему является поведением по умолчанию. Хотя в последнее время набрал обороты подход для работы с данными NoSQL, реляционные базы данных остаются основным местом хранения информации и используются в большинстве команд разработки.

ASP.NET Identity использует подход Code-First платформы Entity Framework для автоматического создания своих схем данных, но прежде необходимо вручную создать базу данных. (Вам не нужно знать как работает Entity Framework Code-First, чтобы использовать ASP.NET Identity.) Для создания базы данных откройте окно Server Explorer в среде Visual Studio ( Ctrl+W, L ). Щелкните правой кнопкой мыши по узлу Data Connections и выберите в контекстном меню команду Create New SQL Server Database, как показано на рисунке ниже:

В открывшемся диалоговом окне Create New SQL Server Database подключитесь к SQL Server Express (по умолчанию используется строка «.SQLEXPRESS») и задайте название для базы данных IdentityDb, как показано на рисунке:

Когда вы щелкните по кнопке OK, Visaul Studio направит запрос к SQL Server на создание базы данных.

Серверный механизм управления сессией (Session, SessionState)

Разберем, как работает механизм сессии со стороны сервера и со стороны клиента.

При стандартных настройках работы состояния сеанса для отслеживания серии запросов от одного клиента используется т.н. сессионная куки (session cookie). Алгоритм следующий:

  1. Абсолютно для каждого нового запроса на сервер (неважно, разные это клиенты или один) ASP.NET генерирует уникальный идентификатор сессии.
    Идентификатор сессии представляет собой случайно сгенерированное число, закодированное с помощью специального алгоритма в строку длиной 24 символа. Строка состоит из литералов от A до Z в нижнем регистре, а также чисел от 0 до 5. Пример идентификатора — hjnyuijl1pam3vox2h5i41in
  2. Если в течение текущего запроса данные клиента НЕ сохраняются для дальнейшей работы с ним, то и время жизни сессии этого клиента заканчивается (фактически не начавшись). При этом ранее сгенерированный идентификатор сессии становится недействительным (так как не был использован). В ответ на такой запрос клиент не получает ничего, чтобы связало его с новой сессией.
  3. Если же данные клиента (например, имя, адрес доставки товара) сохраняются на сервере, ASP.NET связывает сохраненные данные с ранее сгенерированным идентификатором сессии. Далее создается специальная сессионная куки, и в нее записывается также этот идентификатор. Эта куки добавляется в ответ на запрос и сохраняется в браузере клиента. Таким образом, создается связь клиента и его персонализированной информации на сервере. Новая сессия для данного клиента создана.
  4. При каждом следующем запросе клиент передает на сервер персональный идентификатор сессии через куки. Сервер сопоставляет идентификаторы и «узнает» клиента в рамках текущей сессии.
  5. До тех пор пока клиент передает свой персональный ключ, сессия считается активной. Сессия может закончиться по разным причинам, например, вручную на стороне сервера или по истечении какого-то установленного времени (таймаут).
Читайте также:  Pxe boot to lan что это

От теории перейдем к практике. Давайте запрограммируем данный алгоритм и посмотрим, как он выполняется. Для этого используем специальный класс HttpSessionState . При работе в контроллере можно воспользоваться свойством HttpContext.Session . Работать с сессией очень просто, как с любой NameValueCollection :

В этом участке кода мы записываем в состояние сеанса имя пользователя. Это имя мы забираем с html-формы, которую он нам отправил. Дополнительно через свойства мы узнаем, создана ли эта сессия только что, то есть в рамках текущего запроса (если да, то и значение свойства IsNewSession будет равняться true), и уникальный идентификатор сессии. Этот идентификатор после обработки запроса будет автоматически записан в сессионную куки (если еще нет) и отправлен в ответе клиенту.

В браузере клиента можно наблюдать соответствующую куки и идентификатор его сессии:

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

Как видно, работать с сессиями очень просто и удобно. Большинство процессов, связанных с обработкой сессии, происходит автоматически в фоновом режиме. Естественно, разработчик может вмешаться на любой стадии обработки сессии и внести свои коррективы.

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

Item[index] – возвращает элемент данных по его индексу
Item[key] – возвращает элемент данных по его ключу
Remove(index) – удаляет элемент данных по его индексу
Remove(key) – удаляет элемент данных по его ключу
Clear() – удаляет все данные
Count – возвращает общее количество элементов данных для текущей сессии
Abandon() – принудительно завершить сессию
SessionID — возвращает идентификатор текущей сессии
IsNewSession – возвращает true если сессия была создана в рамках текущего запроса
Timeout – возвращает число минут, допустимое между запросами, перед тем как сессия завершится по причине таймаута (по умолчанию, 20 минут)

Изменить настройки для сессии можно либо программно в коде посредством членов класса HttpSessionState , либо через конфигурацию приложения (файл web.config). Например:

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

Подготовка к миграции базы данных

Как было сказано выше, стандартным поведением Entity Framework является воссоздание базы данных при любых изменениях в классах модели, влияющих на схему базы данных. Удаление данных во время процесса разработки обычно не является проблемой, но в производственной среде такое поведение является катастрофическим. В этом разделе я покажу как использовать миграцию данных Entity Framework, которая обновляет схему данных Code First без их удаления.

Во-первых, нам необходимо выполнить следующую команду в панели Package Manager Console среды Visual Studio:

Эта команда добавит поддержку миграций базы данных и создаст папку Migrations в проекте, содержащую файл Configuration.cs со следующим содержимым:

Этот класс будет использоваться для переноса существующих данных в базе данных в новую схему. Метод Seed() используется для обновления существующих записей базы данных. В примере ниже показано использование этого метода для установки значений по умолчанию, в том числе и для нового свойства City:

Обратите внимание, что большая часть кода в этом примере скопирована из класса IdentityDbInit, который мы определили ранее для заполнения базы данных значениями по умолчанию (создание роли администратора и админа). Чуть позже мы обновим этот класс (с добавлением миграций нам не нужен будет этот функционал). Помимо создания администратора, мы инициализировали свойство City значением по умолчанию:

Вы не обязаны устанавливать значения по умолчанию для всех новых свойств — я просто хотел показать, как можно обновить все существующие данные пользователей, используя метод Seed() класса Configuration. Будьте осторожны при установке таких значений в реальных приложениях, т. к. это приведет к обновлению всех данных пользователей при последующих изменениях класса модели.

Изменение класса контекста базы данных

Как я сказал выше, нам необходимо изменить класс инициализации базы данных IdentityDbInit. Сейчас он унаследован от класса DropCreateDatabaseIfModelChanges, который, как вы уже догадались по названию, удаляет и воссоздает базу данных при изменении схемы классов модели Entity Framework. В примере ниже мы изменили базовый класс для IdentityDbInit, чтобы он не влиял на базу данных:

Мы удалили все методы, определенные ранее, а также изменили базовый класс на NullDatabaseInitializer, который игнорирует любые изменения в классах модели данных.

Выполнение миграции

Все что нам остается сделать — это применить миграции. Во-первых выполните следующую команду в панели Package Manager Console:

Это команда создаст новую миграцию с названием CityProperty (мне нравится указывать в названии миграции изменения, которые она затрагивает — в данном случает мы добавили свойство City). В папку Migrations будет добавлен новый файл класса, с названием, отражающим время, когда была выполнена миграция. Например, мой файл называется 201503262244036_CityProperty.cs. Этот файл будет содержать данные для Entity Framework, описывающие изменения в схеме базы данных:

Метод Up() описывает изменения, которые должны быть внесены в схему, когда база данных обновляется. В данном случае мы описали добавление столбца City в таблицу AppNetUsers, в которой сохранятся данные пользователей ASP.NET Identity.

Теперь необходимо выполнить миграцию. Без запуска приложения выполните следующую команду в панели Package Manager Console:

Читайте также:  От чего зависит битность системы

Схема базы данных будет изменена и код метода Configuration.Seed() будет выполнен. Существующие учетные записи пользователей будут сохранены и дополнятся новым столбцом City.

Тестирование миграции

Для тестирования миграции запустите приложение, перейдите по адресу /Home/UserProps и пройдите аутентификацию. После авторизации вы увидите текущее значение свойства City для пользователя и сможете его отредактировать:

Редактирование пользовательского свойства с помощью Identity

Сериализация профиля

Ранее было показано, как свойства сериализуются в одну строку. Например, при сохранении свойства FisrtName, равного «Ivan», и LastName, равного «Petrov» оба значения соединяются вместе в свойстве PropertyValuesString, экономя пространство:

База данных aspnet_Profile

Поле PropertyNames предоставляет информацию, которая необходима для разбора значений в поле PropertyValuesString. Вот что находится в поле PropertyNames в данном примере:

Двоеточия (:) служат разделителями. Нечто интересное происходит, когда создается профиль с данными типа DataTime. Заглянув в поле PropertyValuesString, в нем можно увидеть примерно такое значение:

На первый взгляд это выглядит так, как если бы данные профиля были сериализованы в виде XML, но PropertyValuesString очевидно не содержит допустимый документ (из-за текста в конце). На самом деле здесь происходит вот что: первая часть информации — DateTime — сериализована по умолчанию как XML. Следующие два свойства профиля сериализованы как обычные строки. Поле PropertyName несколько все проясняет:

Интересно, что формат сериализации любого свойства профиля может быть изменен простым добавлением атрибута serializeAs к его объявлению в файле web.config. Возможные значения перечислены в таблице ниже:

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

Преобразует тип в XML-представление, сохраняющееся в виде строки, с применением System.Xml.XmlSerialization.XmlSerializer (тот же класс, что используется веб-службами)

Преобразует тип в соответствующее двоичное представление, понятное только .NET с использованием System.Runtime.Serialization.Formatters.Binary.BinaryFormatter. Это наиболее компактная форма, но и наименее гибкая. Двоичные данные сохраняются в поле PropertyValuesBinary вместо PropertyValues

Выполняет специальную сериапизацию, реализуемую пользовательским поставщиком

Ниже показан пример изменения сериализации настроек профиля:

Теперь при следующей установке профиля сериализованное представление в поле PropertyValuesString примет такую форму:

Если используется режим двоичной сериализации, значение свойства будет помещено в поле PropertyValuesBinary вместо PropertyValuesString. Единственным признаком этого смещения является наличие буквы B вместо S в поле PropertyNames.

Все эти детали сериализации приводят к важному вопросу: что происходит, когда изменяются свойства профиля или способ их сериализации? Свойства профилей не имеют никакой поддержки версий. Тем не менее, свойства можно добавлять или удалять с относительно незначительными последствиями. Например, ProfileModule будет игнорировать свойства, которые представлены в таблице aspnet_Profile, но не определены в файле web.config. При модификации части профиля в следующий раз эти свойства будут заменены новой информацией.

Аналогично, если профиль определяется в файле web.config, который отсутствует в сериализованной информации профиля, то ProfileModule использует только значения по умолчанию. Однако более серьезные изменения вроде переименования свойства, изменения его типа данных и тому подобного, весьма вероятно, вызовут исключение при попытке чтения информации профиля. Хуже того, поскольку сериализованный формат фиксирован, не существует простого способа миграции существующих данных профиля в его новую структуру.

Не все типы могут быть сериализованы всеми способами. Например, классы, которые не содержат конструкторы без параметров, не могут быть сериализованы в режиме Xml. Классы, не имеющие атрибута Serializable, не могут быть сериализованы в режиме Binary. Более подробно эти исключения будут указаны, когда речь пойдет о пользовательских типах в профилях, а пока просто имейте в виду, что обойти сериализацию типов, которые поддаются сериализации, можно только при выборе определенного ее режима.

Forms-аутентификация

При использовании Forms-аутентификации запрос параметров регистрации (например, логина и пароля) происходит в web-форме. Регистрационная страница указывается в файле Web.config. При первом обращении к защищаемым страницам ASP.NET перенаправляет пользователя на страницу для ввода пароля. При успешной регистрации аутентификационные данные сохраняются в виде cookie и при повторном обращении к защищенным страницам регистрация не требуется.
Для того, чтобы использовать Forms-аутентификацию в файле Web.config в корневой папке приложения нужно указать страницу для ввода пароля:

При попытке просмотра защищенной страницы ASP.NET проверяет, есть ли аутентификационных cookie в запросе. Если cookie нет, то запрос перенаправляется на страницу для регистрации, если есть – ASP.NET дешифрует cookie и извлекает из него регистрационную информацию.

На форме находятся поля для ввода логина и пароля и флажок для сохраняемой регистрации. При нажатии кнопки “Войти” происходит поиск пользователя с таким логином и паролем. Если такой пользователь найден, вызывается функция FormsAuthentication.RedirectFromLoginPage (), в которой указывается идентификатор пользователя и флаг для сохраняемой регистрации. Если же нет – выводится сообщение об ошибке.

protected void btnLogin_Click(object sender, System.EventArgs e)

string >
FormsAuthentication.RedirectFromLoginPage(id, chkbRememberLogin.Checked);
>
catch (OleDbException ex)

finally

>

Аутентификация Windows

Существует 4 типа аутентификации Windows : обычная ( basic ), краткая ( digest ), встроенная ( integated ) и на основе клиентских сертификатов SSL. Обычную и краткую аутентификацию применяют для идентификации имени пользователя и пароля, указываемом в диалоговом окне. Они хорошо работают в Internet , так как данные передаются по HTTP. Базовая аутентификация передает пароль и имя пользователя в кодировке Base 64, которую легко раскодировать. Для повышения безопасности можно использовать базовую аутентификацию совместно с SSL. Базовую аутентификация поддерживают большинство браузеров.
Краткая аутентификация является более безопасной, так как пароль шифруется по алгоритму MD 5. Она поддерживается браузерами 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имвол означает всех пользователей):

Читайте также:  После прошивки рекавери телефон не включается

В данном случае разрешен доступ для пользователя DENIS и запрещен доступ для всех остальных. Вместо имени пользователя может быть и название роли, к которой принадлежат пользователи — администраторы, менеджеры, ::

Если мы хотим защитить он неаутентифицированных пользователей папку полностью (например, папку, содержащую формы для администрирования сайта), то нужно разместить в ней файл Web.config с таким содержанием (cимвол означает анонимных неавторизированных пользователей):

Если же мы хотим защитить только один файл (например, для подтверждения заказа в Internet -магазине), то в Web.config из корневой папки нужно добавить такие строки:

Приложение извлекает данные пользователей с помощью свойства Identity класса User. Это свойство возвращает объект, содержащий имя пользователя и роль.

bool authenticated = User.Identity.IsAuthenticated ;
string name = User.Identity.Name;
bool admin = User.IsInRole(«Admins»);

Создание веб-формы

Чтобы создать новую страницу, в контекстном меню проекта выберите Добавить→Веб-форма. После этого автоматически сгенерируются и заполнятся все 3 файла.

Примечание Веб-формы можно создавать с помощью встроенного графического конструктора веб-форм. Что бы открыть его, в контекстном меню нужной веб-формы нажмите на Открыть в конструкторе. Все необходимые элементы можно достать из Панели Элементов (Вид→Панель элементов). Но если вам нужна максимальная гибкость и функциональность — лучше разрабатывать формы вручную в коде.

Потом можно добавить ссылку на новую страницу в панель навигации в Site.Master :

Примечание Обратите внимание, что в ссылке указывается название страницы без расширения.

Если вы откроете новую страницу, то заметите, что вся общая вёрстка отсутствует. Это потому, что в новой странице не подвязывается разметка из Site.Master . Чтобы исправить это, нужно в новой форме вместо сгенерированной вёрстки вставить это:

Во всех упоминаниях нужно заменить News на название вашей страницы. Теперь форма будет отображаться вместе с общей вёрсткой.

Для интеграции значений в вёрстку из aspx.cs используют специальный тег <%: %> :

В этом случае SomeVar должен быть публичным полем. Если нужно выполнить какой-либо код для присвоения значения этой переменной, то выполнить его нужно в сгенерированном методе Page_Load .

Получение значений параметров из URL производится через статический класс Request , в котором хранятся и прочие данные о запросе:

Изучить все возможности веб-форм можно в официальной документации.

Принципы использования и безопасности

Что касается основных составляющих данной платформы, она позволяет писать «чистые» коды на любом языке программирования, входящем в состав фреймворка .NET (например, C#, J#, Script .NET, VB .NET и др.). При этом частично реализация исполняемого кода в процессе формирования страницы возложена на так называемую абстрактную программную модель Web Forms. Кроме того, при использовании IIS-авторизации в ASP.NET существенно повышается и безопасность взаимодействия сервера и клиента на основе протокола HTTP.

Аутентификация и безопасность в ASP.NET (API Membership)

Применение архитектуры Membership API позволяет управлять даже данными пользователей из других источников вроде SQL Server или Active Directory. Сама же аутентификация производится либо за счет специальных форм, либо прямо через Windows IIS.

Аутентификация Windows

Существует 4 типа аутентификации Windows : обычная ( basic ), краткая ( digest ), встроенная ( integated ) и на основе клиентских сертификатов SSL. Обычную и краткую аутентификацию применяют для идентификации имени пользователя и пароля, указываемом в диалоговом окне. Они хорошо работают в Internet , так как данные передаются по HTTP. Базовая аутентификация передает пароль и имя пользователя в кодировке Base 64, которую легко раскодировать. Для повышения безопасности можно использовать базовую аутентификацию совместно с SSL. Базовую аутентификация поддерживают большинство браузеров.
Краткая аутентификация является более безопасной, так как пароль шифруется по алгоритму MD 5. Она поддерживается браузерами 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имвол <*> означает всех пользователей):

В данном случае разрешен доступ для пользователя DENIS и запрещен доступ для всех остальных. Вместо имени пользователя может быть и название роли, к которой принадлежат пользователи — администраторы, менеджеры, ::

Если мы хотим защитить он неаутентифицированных пользователей папку полностью (например, папку, содержащую формы для администрирования сайта), то нужно разместить в ней файл Web.config с таким содержанием (cимвол означает анонимных неавторизированных пользователей):

Если же мы хотим защитить только один файл (например, для подтверждения заказа в Internet -магазине), то в Web.config из корневой папки нужно добавить такие строки:

Приложение извлекает данные пользователей с помощью свойства Identity класса User. Это свойство возвращает объект, содержащий имя пользователя и роль.

bool authenticated = User.Identity.IsAuthenticated ;
string name = User.Identity.Name;
bool admin = User.IsInRole("Admins");

Что касается установки платформы и ускорения разработки веб-приложений на основе .NET, большинство специалистов рекомендует для начального ознакомления устанавливать ASP.NET версии 2.0. Эта модификация может использоваться практически во всех десктопных и серверных версиях Windows с сопутствующими сервис-паками, начиная с Windows 2000. Но сами готовые страницы желательно размещать исключительно на Windows Server.

Как считается, установка ASP.NET не является необходимой при использовании Visual Studio .NET 2005 года выпуска и выше.

Оболочка Visual Web Developer

В этом наборе имеется специальный компонент Visual Web Developer Express Edition, для которого достаточно наличия только основного фреймворка .NET. Системные требования выглядят весьма скромными (ЦП 600 МГц 128 Мб ОЗУ), не говоря уже о том, что на установку всех компонентов, включая документацию, потребуется порядка 1,3 Гб свободного места на диске, но в процессе инсталляции VWD самостоятельно догрузит из интернета еще около 120 Мб.

Ссылка на основную публикацию