Предыдущий ролик Следующий ролик  

Видео урок: Configuring local authentication

Основы ASP.NET MVC 5

Теперь давайте обсудим несколько возможностей аутентификации в рамках нашего нового ASP.NET MVC приложения. Когда мы в первый раз создавали веб-приложение, у нас была возможность изменить тип аутентификации. Если нажать кнопку "Изменить аутентификацию", то нам будет предложено 4 варианта. Первый - "Без аутентификации" (No Authentication), для тех ситуаций, когда всем пользователям разрешено вызывать действия контроллера. Вариант "Аккаунты индивидуальных пользователей" (Individual User Accounts) позволяет пользователям регистрироваться в нашем приложении и создавать новый аккаунт или использовать существующий аккаунт, который им предоставил другой провайдер, поддерживающий протокол OAuth, или аккаунт стороннего приложения, например, аккаунт Facebook или Twitter.

Вариант "Аккаунты организаций" (Organizational accounts) - для аккаунтов компаний, использующих службу Active Directory или облачные сервисы и аутентификацию Windows для базовых веб-приложений в конкретной сети. Мы продолжим работу с аккаунтами индивидуальных пользователей, которые будут храниться в нашей локальной базе данных, а также посмотрим, как разрешить использовать учетную запись Facebook, являющегося одним из примеров стороннего провайдера, причем довольно популярного. Итак, вернемся к файлу Startup.Auth.cs, в котором определен метод ConfigureAuth. Первое, о чем бы мне хотелось вкратце упомянуть, - здесь есть два вызова метода app.CreatePerOwinContext, приводящих к созданию двух Singleton экземпляров, которые можно использовать в рамках всего приложения.

Этот связующий OWIN-компонент для аутентификации олицетворяет первый этап запроса, во время которого приложение будет обращаться к базе данных. Кроме того, он задает ссылки на наши классы ApplicationDbContext и ApplicationUserManager, которые впоследствии мы можем использовать повторно и не создавать новые экземпляры этих классов. Они будут храниться внутри текущего HttpContext, который заведомо недоступен тогда, когда он вам будет нужен, но в следующем видео я покажу вам как минимум одно место, в котором можно использовать существующий экземпляр ApplicationDbContext.

Далее идет вызов UseCookieAuthentication, для которого указано несколько опций. ApplicationCookie - это тип аутентификации по умолчанию, и именно этот тип мы используем в данный момент. Но есть несколько других опций, в том числе, аутентификация TwoFactorCookie, предполагающая настройку аутентификации в два этапа с помощью телефона или электронной почты: сюда отправляется код, который пользователь может самостоятельно проверить. Именно здесь мы настраиваем путь к странице авторизации, чтобы перенаправлять на нее запросы еще не зарегистрированных пользователей.

Итак, то, что вы, возможно, привыкли видеть в секции настроек аутентификации формы в файле Web.config, теперь вынесено сюда. Например, я могу изменить здесь имя используемого по умолчанию Cookie, а также настройки его безопасности. Например, CookieHttpOnly будет определять, должен ли JavaScript иметь доступ к этому cookie или же он может передаваться только с Http-запросами. Сейчас я авторизован, поэтому давайте бегло пробежимся по файлам cookies в FireBug. _RequestVerificationToken - это знак анти-подделки, которую мы обсуждали ранее, а .AspNeT.ApplicationCookie - это моя лицензия на аутентификацию.

В нем хранится зашифрованная информация о моем аккаунте пользователя. Немного увеличу размер шрифта, чтобы вам было лучше видно. Итак, когда я вхожу в систему или регистрируюсь, моя подлинность подтверждается в таблице пользователей, с которой мы уже работали, и я создаю этот cookie, который проверяется в последующих запросах. На основании интервала валидации, который задается по умолчанию равным 30 минутам, подлинность моего аккаунта периодически проверяется менеджером приложения, который подключен к таблице AspNet.Users.

Как видите, по умолчанию мы настраиваем еще и компонент аутентификации, что дает нам возможность использовать cookies и для сущностей, хранящихся в сторонних приложениях, к примеру, в тех четырех, которые закомментированы ниже: Microsoft, Twitter, Facebook и Google. В следующем видео мы узнаем, как сконфигурировать приложение таким образом, чтобы оно поддерживало учетную запись Facebook.