22 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Aspnet пользователь что это

Учетная запись ASP.NET- Что это?

У меня на компьютере два пользователя уже очень давно:я и мой муж, а сегодня появился ещё и третий ASP.NET . Что это такое? Должна ли я избавиться от него, и если да, то как?

Учётная запись ASP.NET создаётся обычно при обновлении, установки того или иного программного обеспечения, например “Microsoft.NET Framework 1.1“! Данная учётная запись не разрешает какого-либо интерактивного или удалённого соединения и привилегия его на гостевом уровне. Так что Microsoft или ещё кто-либо не смогут воспользоваться этой учётной записью, чтобы подключиться к вашему компьютеру!

Если учётная запись ASP.NET вам всё-таки мешает, то её можно удалить, воспользовавшись одним из 3 способов (на примере операционной системы Windows 7, на других ОС порядок действий примерно тот же).

Оставляем NET Framework, но удаляем учётную запись.

Откройте Панель управления -> Администрирование*­ * -> **Управление компьютером. В окне слева раскройте список Локальные пользователи и группы и нажмите на Пользователи. Затем выбираете учётную запись ASP.NET, нажимаете на ней правой кнопкой мыши (ПКМ) и выбираете Удалить.

Удаляем “Microsoft.NET Framework”.

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

Открываем Панель управления -> Программы и компоненты, находим в списке вышеупомянутую технологию, щёлкаем по ней ПКМ и выбираем Удалить/Изменить­ . После этих действий “NET Framework” исчезнет с вашего компьютера вместе с учётной записью.

Ну и наконец третий способ, который можно считать самым “гуманным”, ничего удалять не придётся.

Скрываем учётную запись “ASP.NET.

Откройте окно Выполнить, нажав на клавиатуре сочетание клавиш Win + R, введите команду regedit и нажмите на Enter.

В окне редактора реестра откройте раздел:

Если в ветке раздела Winlogon не существует раздел SpecialAccounts и подраздел Userlist, то их нужно создать! Кликайте по разделу Winlogon ПКМ и выбираете Создать -> Раздел, пишите: SpecialAccounts и жмёте на Enter. Затем точно также выделяете SpecialAccounts и создаёте раздел Userlist.

Далее в правой части окна раздела Userlist, щёлкаете на пустом месте ПКМ и выбираете пункт Создать -> Параметр DWORD (32 бита).

Идентификация в ASP.NET

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

Базовые понятия систем безопасности

Существуют два понятия, без которых невозможно обсуждение безопасности:

  • Аутентификация (authentication) – процесс определения личности пользователя, требующий верные логин и пароль, чтобы доказать, что он на самом деле тот, за кого себя выдает.
  • Авторизация (authorization) – это процесс выставления прав пользователю, прошедшего аутентификацию.

Способы аутентификации ASP.NET

Среда ASP.NET предоставляет три способа аутентификации:

  • Windows – аутентификация на основе системы диспетчера локальной сети Windows
    NT.
  • Forms – аутентификация на основе cookies.
  • Passport – аутентификация с помощью службы Passport от
    Microsoft.

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

Вы можете справедливо заметить, что после внесения показанных выше изменений ничего особенного не происходит.
Эта ситуация возникает из-за того, что мы не запретили доступ анонимным пользователям. Для
такого запрета надо внести еще одно изменение в файле
web.config:

Этот знак – (?) – обозначает всех анонимных пользователей. А включая это правило вы запрещаете им доступ. Теперь каждый пользователь должен быть аутентифицирован, и каждый
не аутентифицированный будет перенаправлен на страницу регистрации.

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

Небольшие пояснения: параметр loginUrl в теге authentication указывает на страницу регистрации (по умолчанию – default.aspx), а параметр passwordFormat в теге credentials означает, что логин и пароль не зашифрованы (альтернативы – использовать алгоритмы шифрования SHA1 и MD5. О них мы поговорим позже ).

Для проверки верности логина и пароля будем использовать метод
FormsAuthentication. Authenticate(string login,string pass). А для регистрации пользователя в приложение ASP.NET путем создания cookie, и перенаправления на страницу, которая была изначально запрошена пользователем, будем использовать метод
FormsAuthentication. RedirectFromLoginPage(string login, bool CreatePersistentCookie) (второй параметр указывает на то,
каким будет посланный cookie – постоянный (срок годности
– 50 лет, значение true) или нет (false)).

Вот, собственно, и сам код страницы регистрации:

Что такое учетная запись компьютера ASP.NET?

Являетесь ли вы одним из наших пользователей, который получает приглашение под Windows 10 или Windows 8.1, 8 каждый раз, когда вы пытаетесь удалить или изменить определенную папку или файл? Все, что вам нужно сделать, это выполнить следующие шаги, и вы можете решить свою проблему с помощью ASP.NET MACHINE ACCOUNT в Windows 10 или Windows 8.1, чтобы быстро возобновить свою повседневную деятельность.

Почему мой компьютер имеет учетную запись ASP.NET?

Если вы установили обновления или новое программное обеспечение на свой компьютер, вы установили Microsoft.NET Framework 1.1, который включает в себя общее приложение времени выполнения, которое может понадобиться выполняемым приложениям. Во время этой установки создается учетная запись ASP.NET. Если ваш компьютер уже отобразил ваш рабочий стол сразу после запуска, вы можете увидеть экран приветствия при запуске компьютера с существующей учетной записью пользователя и учетной записью ASP.NET. Это потому, что на вашем компьютере теперь есть две учетные записи.

Учетная запись не разрешает удаленное или интерактивное соединение и имеет только привилегии гостевого уровня. Поэтому он не может использоваться кем-либо еще или Microsoft для подключения к вашему компьютеру. Если вы используете свой компьютер только для личного использования (то есть, если вы не являетесь разработчиком программного обеспечения, который должен разрабатывать и тестировать программное обеспечение с использованием Internet Information Services (IIS)), вы можете удалить эту учетную запись одним из следующих способов:

1) Удалить аккаунт и оставить . NET Framework установлены:
– Запустите инструмент управления компьютером в папке «Администрирование» (в разделе «Панель управления»).
– Выберите узел «Локальные пользователи и группы».
– Нажмите на узел «Пользователи» и выберите учетную запись ASPNET.
– Щелкните правой кнопкой мыши выбранную учетную запись и выберите «Удалить».

Май Обновление 2020:

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

  • Шаг 1: Скачать PC Repair & Optimizer Tool (Windows 10, 8, 7, XP, Vista – Microsoft Gold Certified).
  • Шаг 2: Нажмите «Начать сканирование”, Чтобы найти проблемы реестра Windows, которые могут вызывать проблемы с ПК.
  • Шаг 3: Нажмите «Починить все», Чтобы исправить все проблемы.

2) Удалите .NET Framework (Примечание. Это предотвратит работу приложений, использующих .NET Framework):
– Откройте панель управления
– Откройте «Установка и удаление программ».
– Выберите Microsoft.NET Framework 1.1.
– Нажмите на Изменить / Удалить. Один из этих подходов полностью удаляет учетную запись из вашей системы.

Чтобы удалить эту учетную запись компьютера ASP.NET

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

  1. Нажмите Windows + R, чтобы открыть окно «Выполнить», введите regedit и нажмите Enter.
  2. В окне вкладки «Редактор» перейдите к следующему разделу реестра: HKEY_LOCAL_MACHINE Software Microsoft Windows NT CurrentVersion Winlogon SpecialAccounts Userlist. Если Специальный
  3. Ключ учетных записей и ключ списка пользователей не существуют, создайте их.
  4. В правой части списка пользователей щелкните правой кнопкой мыши в любом месте и укажите значение New -> DWORD (32-bit).
  5. Назовите новое имя параметра реестра DWORD точно так же, как имя пользователя, используемое на экране входа в систему. (В этом случае учетная запись компьютера ASP.NET)
  6. Дважды щелкните значение записи DWORD и установите значение 0, чтобы скрыть учетную запись перед экраном приветствия. Чтобы восстановить учетную запись пользователя на главном экране, удалите регистрационную запись или установите значение данных в 1.
  7. Выйдите из редактора реестра. Выйдите из системы или перезагрузите компьютер, чтобы изменения вступили в силу.
Читать еще:  Что лучше Imax или Real 3D

Переустановка .NET Framework

Учетная запись создается из-за некоторых ошибок конфигурации во время первоначальной установки .NET Framework. Тем не менее, переустановка автоматически удаляет его. Поэтому мы рекомендуем вам загрузить фреймворк обратно на компьютер и попытаться установить его из исполняемого файла. Он скажет вам, что он уже установлен, и спросит, хотите ли вы его переустановить. Выберите Переустановить, и учетная запись будет автоматически удалена.

CCNA, веб-разработчик, ПК для устранения неполадок

Я компьютерный энтузиаст и практикующий ИТ-специалист. У меня за плечами многолетний опыт работы в области компьютерного программирования, устранения неисправностей и ремонта оборудования. Я специализируюсь на веб-разработке и дизайне баз данных. У меня также есть сертификат CCNA для проектирования сетей и устранения неполадок.

Аутентификация с помощью ASP.NET Identity

Самым базовым средством работы с ASP.NET Identity является аутентификация пользователей, и в этой статье я покажу как ее использовать. Ниже собраны базовые вопросы, которые могут возникнуть у вас в данный момент:

Аутентификация — это проверка учетных данных, предоставляемых пользователем. После успешной аутентификации пользователя, во все последующие запросы добавляется cookie-файл с идентификатором пользователя.

Зачем нужно использовать?

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

Как использовать в рамках MVC?

В ASP.NET MVC используется атрибут авторизации, который применяется к контроллерам и методам действий для того, чтобы ограничить доступ неавторизованным пользователям.

Далее я продемонстрирую возможности систем аутентификации и авторизации Identity на учетных записях пользователей, хранящихся в локальной базе данных. Однако, в последующих статьях мы разберем аутентификацию через социальные сети (такие как Facebook, Вконтакте и т.д.)

Процесс аутентификации/авторизации

Платформа ASP.NET Identity полностью интегрирована в ASP.NET. Это означает, что вы можете использовать стандартные средства аутентификации/авторизации MVC вместе с Identity, такие как атрибут Authorize. В этой статье мы ограничим доступ к методу действия Index контроллера Home и реализуем функции, которые позволят идентифицировать пользователей, чтобы они могли получить к нему доступ. В примере ниже я применил атрибут Authorize:

Атрибут Authorize по умолчанию ограничивает доступ к методам действий для пользователей, не прошедших аутентификацию. Если вы запустите приложение и запросите представление Index контроллера Home (по любому из адресов /Home/Index, /Home или просто /), вы увидите сообщение об ошибке, показанное на рисунке ниже:

Платформа ASP.NET предоставляет полезную информацию о пользователе в объекте HttpContext, которую использует атрибут Authorize, чтобы проверить состояние текущего запроса и посмотреть, является ли пользователь аутентифицированным. Свойство HttpContext.User возвращает реализацию интерфейса IPrincipal, который определен в пространстве имен System.Security.Principal. Интерфейс IPrincipal определяет свойства и методы, перечисленные в таблице ниже:

Возвращает реализацию интерфейса IIdentity, описывающую пользователя, связанного с запросом.

Возвращает true, если пользователь является членом указанной роли.

Интерфейс IIdentity, реализация которого возвращается свойством Iprincipal.Identity, также содержит несколько полезных свойств:

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

Возвращает true, если пользователь аутентифицирован.

Возвращает имя текущего пользователя.

ASP.NET Identity содержит модуль, который обрабатывает глобальное событие AuthenticateRequest жизненного цикла приложения в котором проверяет cookie в браузере пользователя, для определения того, является ли он аутентифицированным. Позже я покажу как используются эти cookie-файлы. Если пользователь аутентифицирован, ASP.NET задает свойству IIdentity.IsAuthenticated значение true. (В нашем приложении мы еще не реализовали функцию аутентификации, поэтому свойство IsAuthenticated будет всегда возвращать false.)

Модуль авторизации проверяет свойство IsAuthenticated и, если пользователь не прошел проверку, возвращает HTTP-статус 401 и завершает запрос. В этот момент модуль ASP.NET Identity перехватывает запрос и перенаправляет пользователя на страницу входа /Account/Login. Это URL-адрес, который я определил в классе IdentityConfig ранее:

Браузер перенаправит вас по адресу /Account/Login, но т. к. мы еще не добавили контроллер для этого запроса, появится ошибка 404.

Подготовка к реализации системы аутентификации

Даже несмотря на то, что наш запрос на данный момент заканчивается ошибкой, мы наглядно показали как вписывается Identity в жизненный цикл приложения ASP.NET. Следующий шаг — создать контроллер, обрабатывающий запрос к URL /Account/Login, для отображения формы входа в приложение. Добавьте сначала новый класс view-model в файл UserViewModels.cs:

Новый класс модели содержит свойства Name и Password, декларированные атрибутом Required, который говорит системы валидации модели, что эти свойства не должны иметь пустых значений. В реальном проекте не забывайте также добавлять клиентскую проверку при вводе пользователем имени и пароля. В данном проекте мы пропустим эту проверку, т. к. основная наша цель — разобраться в ASP.NET Identity.

Теперь добавьте контроллер Account в наше приложение, с кодом, показанным в примере ниже, который содержит две перегруженные версии метода Login. Обратите внимание, что здесь не реализована логика проверки достоверности модели, т. к. мы возвращаем представление для проверки учетных данных пользователя и входа пользователей в приложение.

Хотя этот код еще не относится к аутентификации пользователей, контроллер Account все же содержит некоторую полезную инфраструктуру, не относящуюся к ASP.NET Identity.

Во-первых, обратите внимание, что оба метода Login принимают строковый аргумент returnUrl. Когда пользователь запрашивает URL-адрес с ограниченным доступом, он перенаправляется по адресу /Account/Login со строкой запроса, содержащей адрес страницы с ограниченным доступом. Например, если сейчас вы запросите адрес /Home/Index, вас перенаправит на URL следующего вида:

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

Далее обратите внимание на атрибуты, которые я применил к контроллеру и его методам действий. Функции контроллера Account (такие как смена пароля, например) по умолчанию должны быть доступны только авторизованным пользователям. Для этого мы применили атрибут Authorize к контроллеру Account и добавили атрибут AllowAnonymous к некоторым методам действий. Это позволяет ограничить методы действий для авторизованных пользователей по умолчанию, но открыть доступ неавторизованным пользователям для входа в приложение.

Наконец, мы добавили атрибут ValidateAntiForgeryToken который работает в связке с классом HtmlHelper, используемом в Razor в представлениях cshtml. Вспомогательный метод AntiForgeryToken защищает от межсайтовой подделки запросов CSRF , благодаря тому, что генерирует скрытое поле формы с токеном, который проверяется при отправке формы.

Последний подготовительный шаг — создание формы входа в приложение. Добавьте в папку /Views/Account файл представления Login.cshtml:

В этой разметке стоит обратить внимание на использование вспомогательного метода Html.AntiForgeryToken и создание скрытое поля с сохранением параметра returnUrl. В остальном — это обычная форма, генерируемая с помощью Razor.

Итак, мы завершили подготовку к созданию системы аутентификации. Запустите приложение и перейдите по адресу /Home/Index – система перенаправит вас на страницу входа:

Аутентификация пользователей

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

Самая простая часть – это проверка учетных данных, которую мы делаем с помощью метода FindAsync класса AppUserManager:

В дальнейшем мы будем многократно обращаться к экземпляру класса AppUserManager, поэтому мы создали отдельное свойство UserManager, который возвращает экземпляр класса AppUserManager с помощью метода расширения GetOwinContext() класса HttpContext.

Метод FindAsync принимает в качестве параметров имя и пароль, введенные пользователем, и возвращает экземпляр класса пользователя (AppUser в примере) если учетная запись с такими данными существует. Если нет учетной записи с таким именем или пароль не совпадает, метод FindAsync возвращает значение null. В этом случае мы добавляем ошибку в метаданные модели, которая будет отображена пользователю. Наиболее полезные методы интерфейса IAuthenticationManager

Вход пользователя в систему, что фактически означает создание аутентифицирующего cookie-файла

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

Аргументами метода SignIn являются объект AuthenticationProperties, определяющий свойства настройки процесса аутентификации и объект ClaimsIdentity. Мы задали свойству IsPersistent объекта AuthenticationProperties значение true — это означает, что файлы cookie будут сохраняться между сессиями пользователей. Благодаря этому, если пользователь выйдет из приложения и зайдет, например, на следующий день, он будет автоматически аутентифицирован. (Есть и другие полезные свойства, определенные в классе AuthenticationProperties, но свойство IsPersistent является единственным, который широко используется на данный момент.)

Читать еще:  На что влияет частота процессора в ноутбуке

После воссоздания файлов cookie мы перенаправляем пользователя по URL-адресу, который он просматривал до аутентификации (используя параметр returnUrl).

Давайте протестируем процесс аутентификации. Запустите приложение и перейдите по адресу /Home/Index. Браузер перенаправит вас на страницу входа, где необходимо ввести данные пользователя, которого мы создали ранее при тестировании панели администратора:

Двухфакторная аутентификация

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

Новое в ASP.NET 2. Профили пользователей

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

Однако это задачка не из легких. Представьте, что вы — продавец большого магазина, в котором ежедневно бывает не одна сотня покупателей, а что если вы — сайт, который ежедневно просматривают десятки тысяч посетителей? Нужно ведь не просто запомнить каждого, но еще и сохранить все это, пока он не соизволит зайти к вам еще раз, чтобы вы смогли продемонстрировать ему свою феноменальную память. А что если за это время его вкусы изменились и придется все запоминать заново, проблемы растут как снежный ком. Чтобы автоматизировать задачу потребуется не одна таблица в базе данных, множество запросов к ним, да еще и куча кода, чтобы связать все воедино. Ну и тестирование, тестирование, тестирование. Задумаешься, а стоит ли овчинка выделки? Однако не все так плохо, с выходом ASP.NET 2.0 все проблемы отходят на второй план, потому что теперь он содержит новую встроенную возможность — профиль (Profile) пользователя.

Профиль пользователя

Сервис персонализации (personalization) – это новая возможность в ASP.NET, которая применялась еще в продукте Site Server. Данный сервис предоставляет готовое решение для хранения персональных данных, непосредственно характеризующих пользователя сайта, так называемого профиля пользователя (Profile). Вот несколько примеров подобных данных – это имя, фамилия, адрес электронной почты пользователя, его временная зона, а также “корзина покупателя» для пользователя сайта электронной коммерции или информация о принадлежности посетителя сайта тем или иным группам пользователей. Сейчас такие параметры обычно хранят в сессии (Session), в файлах cookie, базах данных и так далее. Независимо от места их хранения, ASP.NET 1.x мало помогает в этом случае. Приходится своими силами разрабатывать и настраивать всю инфраструктуру под соответствующее хранилище. Также самостоятельно необходимо получать эти данные и сохранять их. Коллекция Session облегчает жизнь, но она ненадежна, а хранение ее в отдельном процессе или в базе данных приводило к высоким затратам ресурсов сервера и увеличению времени отклика приложения. В сущности, сервис персонализации — это коллекция, очень похожая на сессию по своей сути. Так же, как и сессия, профиль пользователя относится к одному конкретному посетителю сайта и обеспечивает хранение информации, относящейся непосредственно к нему. Однако есть и значительные отличия, выгодно характеризующие новый сервис, среди них:

* Строго типизированный доступ к элементам коллекции: в отличие от коллекций типа Application, Session, Context, Cache, да и всех остальных коллекций, перешедших по наследству от ASP.NET 1.x, которые осуществляли доступ к значениям своих элементов по ключу, профиль пользователя – класс HttpProfile – использует строго типизированные именованные свойства, работать с которыми гораздо удобнее. Запоминать названия и типы свойств больше не нужно, теперь это удел Intellisense, который справляется с этим гораздо лучше. Другой полезный эффект — проверка типов на этапе компиляции. Например, следующий фрагмент кода демонстрирует два варианта получения даты последней активности пользователя:
o старый, с использованием сессии:
DateTime LastLogin = (DateTime)Session[“LastLogin»];
o новый, с привлечением сервиса персонализации:
DateTime LastLogin = Profile.LastLogin;
Заметьте, что во втором случае приведение типов не потребовалось, поскольку дата уже хранится как дата, а не упаковывается в object.
* Выборка данных из хранилища производится только при необходимости. В отличие от класса Session данные извлекаются не при каждом запросе страницы, занимая ресурсы сервера, а только тогда, когда в них действительно есть потребность.
* Время хранения данных не ограничено. В отличие от всех остальных коллекций, время жизни сохраненных данных в профиле бесконечно и никак не зависит ни от приложения, ни от текущей сессии. Фактически данные будут храниться вечно, если хранилище достаточно надежно и Вы сами не решите их однажды удалить оттуда.
* Данные могут храниться как для известных (зарегистрированных и прошедших аутентификацию в системе), так и для неизвестных (анонимных, то есть еще не зарегистрированных или просто не вошедших в систему) посетителей сайта.
* Доступ к атрибутам профиля осуществляется так же просто, как и при работе с коллекцией Session. Это возможно благодаря новому свойству Profile, доступному во всех производных от System.Web.UI.Control классах приложения. Либо во всех классах приложения через контекст веб-приложения, используя следующий синтаксис: System.Web.HttpContext.Current.Profile или ((ProfileCommon)System.Web.HttpContext.Current.Profile).MessagesPosted если нужен доступ к собственным свойствам профиля. ProfileCommon — это специальный класс, автоматически создаваемый компилятором при включенном профиле и содержащий все пользовательские свойства, добавленные через web.config.
* Хранилище для данных расширяемо и может быть любым. По-умолчанию в поставку ASP.NET 2.0 входит один провайдер для профиля пользователя – провайдер для Microsoft SQL Server. Но возможно и создание своего собственного провайдера данных. Для этого предлагается новая модель реализации провайдеров. Она подразумевает выделение из программного интерфейса хранилища уровня работы с данными. Так достигается возможность прозрачного доступа к любым данным, независимо от типа физического хранилища – это может быть база данных и файл на жестком диске или даже выделенный сервер данных. Подобная архитектура провайдера данных используется и в других сервисах ASP.NET 2.0. Позже мы рассмотрим пример создания собственного провайдера данных и увидим, насколько это просто. Провайдер данных может быть задан статически в файле конфигурации приложения или динамически назначен в режиме выполнения.

Давайте рассмотрим, как можно начать использовать профиль. Итак, профиль сохраняет данные о конкретном пользователе вашего сайта и позволяет затем эти получать. По умолчанию все эти данные будут сохраняться в таблицах базы данных SQL Server Express. Строка соединения по умолчанию называется «LocalSqlServer» и задана она в глобальном файле настроек machine.config. Вот как она выглядит:

то есть база данных будет работать в режиме User Instance, название файла базы данных ASPNETDB.MDF и при первой попытке сохранения профиля база данных будет автоматически создана в подпапке App_Data корневой директории сайта.

Отлично, оказывается все уже настроено, все что нам остается сделать — это описать нужные нам поля профиля в файле конфигурации приложения web.config. Настроим профиль на хранение имени и фамилии пользователя, а также счетчика его посещений нашего сайта:

По умолчанию тип параметра профиля — это System.String, поэтому, для того, чтобы хранить количество посещений сайта как число, нам необходимо явно задать его тип. Также параметр может иметь значение по умолчанию (в нашем случае это 1). Если провайдер данных не обнаружит значения параметра в хранилище данных, то будет возвращено значение параметра по умолчанию.

После того как профиль настроен, использовать его очень просто. Приведенный ниже код отображает данные из профиля текущего пользователя и обновляет их при нажатии на кнопку. Заметьте, никакого дополнительного кода для сохранения этих сведений где-либо в базе данных или получения их оттуда писать не нужно, об этом позаботится инфраструктура ASP.NET.

Расширение профиля пользователя

Профиль содержит следующие базовые параметры:

Аутентификация в ASP.NET

Written on 24 Сентября 2006 . Posted in ASP.NET

ОГЛАВЛЕНИЕ

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. Значение None имеет смысл устанавливать если используется собственная схема аутентификации или анонимный доступ (для повышения производительности).

Аутентификация 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”);

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)
<
if (!IsValid) // проверяем правильность введенных данных
return;

OleDbConnection connection = GetDbConnection();

OleDbCommand command = new OleDbCommand(string.Format(“SELECT id FROM Customers WHERE login=’<0>‘ AND password=’<1>‘”, login, password), connection);

OleDbDataReader reader = command.ExecuteReader();
if (!reader.Read()) // пароль или логин неверны
<
lblError.Text = “Неверный пароль – попробуйте еще раз”;
return ;
>

string id = return reader.GetInt32(0).ToString();

FormsAuthentication.RedirectFromLoginPage(id, chkbRememberLogin.Checked);
>
catch (OleDbException ex)
<
lblError.Text = “Ошибка базы данных”;
>
finally
<
connection.Close();
>
>

Аутентификации на основе ролей

Для аутентификации на основе ролей применяется атрибут roles тега allow. Например, если мы хотим запретить доступ всем, кроме пользователей из группы Admin , мы должны вставить такие строки в файл Web.config.

Затем при каждом запросе нужно связывать учетные записи пользователей и роли. Обычно это делается в обработчике события AuthenticateRequest в файле Global.asax.

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
<
HttpApplication appl = (HttpApplication)sender;

DataTable tblUsers = (DataTable)Application[“UsersTable”];
appl.Context.User = new GenericPrincipal(identity,
new string[] <(string)(tblUsers.Rows.Find(identity.Name)["Role"]) >);
>
>

В коде проверяется тип аутентификации пользователя и то, что он уже зарегистрирован. Имя пользователя извлекается из cookie свойством Name. Таблица с именами пользователей и их ролями для повышения быстродействия была сохранена в объекте Application. Из этой таблицы и находим роль пользователя, которую сохраняем в объекте GenericPrincipal.

Параметры аутентификации

Если второй параметр функции RedirectFromLoginPage () равен false , то время жизни сеансового cookie , генерируемого ASP.NET , равно по умолчанию 30 минутам. Для изменения этого интервала служит параметр timeout тега forms в файле Web.config. Установим время действия аутентификации в 3 часа.

Когда сеансовый cookie возвращается в следующих после регистрации запросах, он автоматически обновляется, если время жизни истекло больше чем на половину. Время же жизни сохраняемых cookie равно 50 годам.
Можно указать имя аутентификационных cookie , поместив его в атрибут name (имя по умолчанию – ASPXAUTH ):

По умолчанию аутентификацонные cookie шифруются и проверяются. Уровень защиты можно указать через атрибут protection , значение по умолчанию которого All. Значение Validation предписывает только проверку cookie , а значение Encript – только шифрование. Полностью отключить защиту можно указав значение None. Отключать защиту имеет смысл если данные передаются по протоколу HTTPS.

Сброс forms-аутентификации

Сброс регистрации можно увидеть на многих сайтах. Для сброса аутентификации применяется метод FormsAuthentication.SignOut (). Он устанавливает дату окончания действия cookie на прошедшее время и cookie автоматически уничтожается.

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

Для использования Passport аутентификации в web -приложении нужно установить Passport SDK. Passport SDK предоставляется бесплатно для тестирования, но для коммерческого использования на сайте необходимо приобретать лицензию.
При обращении к приложению с Passport аутентификацией проверяется наличие cookie с данные Passport. Если такого файла нет, пользователь перенаправляется на страницу для регистрации Passport.
Для включения данного режима аутентификации в файле Web. config нужно указать следующее:

Для обязательной регистрации всех посетителей сайта в разделе autorization нужно запретить доступ неавторизированным пользователем:

голоса
Рейтинг статьи
Ссылка на основную публикацию
Статьи c упоминанием слов: