1 / 22

Аутентификация и авторизация

Аутентификация и авторизация. ASP . NET MVC 4.0 2014. Аутенификация и авторизация.

sonel
Download Presentation

Аутентификация и авторизация

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Аутентификация и авторизация ASP.NET MVC 4.0 2014

  2. Аутенификация и авторизация Аутентификация – проверка идентичности пользователя некоторому объекту, известному системе. Например, проверяется, что пользователь знает те же самые логин и пароль, что зарегистрированы на сервере под Id=12345. Авторизация – проверка того, что аутентифицированный пользователь имеет определенные права, например, создавать других пользователей. Часто отдельные права соединяются в пакеты и называются ролями. • Windows Authentication • Forms Authentication Forms Authentication – такой способ аутентификации, когда пользователь доказывает свою идентичность при помощи ввода определенных данных через веб-интерфейс.

  3. Forms Authentication <authenticationmode="Forms"> <formsloginUrl="~/Account/Login"timeout="2880" /> </authentication> В web.config:

  4. Как работает FA • Когда пользователь успешно аутентифицирован, ему отсылается мандат – зашифрованный куки с именем .ASPAUTH. • Этот куки в дальнейшем присоединяется к каждому запросу пользователя и доказывает его идентичность. Проверка наличия куки в запросе производится прозрачно для программиста в особом модуле ASP.NET. • В куки зашифровано имя пользователя, срок годности куки и пр., поэтому если пользователь долго не активен, его мандат делается недействительным и требуется повторная аутентификация. • Если новый пользователь запрашивает страницу, доступную лишь аутентифицированному пользователю, он автоматически перенаправляется на страницу loginUrl • После идентификации пользователь автоматически перенаправляется на запрошенную страницу.

  5. Информация о пользователе Информация об аутентифицированном пользователе, записанная в куки, доступна в контроллере через свойство User (тип свойства – IPrincipal). publicinterfaceIPrincipal { IIdentity Identity { get; } boolIsInRole(string role); } publicinterfaceIIdentity { stringAuthenticationType { get; } boolIsAuthenticated { get; } string Name { get; } } Эти интерфейсы являются частью фреймворка безопасности ASP.NET.

  6. Управление доступом Доступ к котроллерам в целом и к отдельным методам-действиям регулируется фильтром [Authorize] • [Authorize] • – метод доступен для всех аутентифицированных пользователей • [Authorize(Roles="Administrator,SuperAdmin")] • – метод доступен для пользователей в указанных ролях • [Authorize(Users="Jon, Phil, Scott, Brad")] • – метод доступен для пользователей с указанными именами

  7. Пользовательский интерфейс FA Он состоит из: формы для аутентификации (показана раньше), формы для саморегистрации в системе, формы для изменения пароля.

  8. Программный интерфейс FA Программный интерфейс является частью инфраструктуры ASP.NET и состоит из нескольких статических классов. Реализация программного интерфейса обеспечивается классами провайдеров. Provider3 Provider1 Provider2 API

  9. Классы из System.Web.Security MembershipProvider RoleProvider SqlMembershipProvider SqlRoleProvider static class Мемbership static class Roles В АSP.NET есть готовые реализации провайдеров на основе MS SQL Server и ActuveDirectory, но можно реализовать и собственный вариант. В своем приложении мы воспользуемся провайдером на основе MS SQL Server. Чтобы этот провайдер исполнил свою роль, ему нужны не только классы кода, но и таблицы в базе данных MS SqlServer.

  10. Класс Membership Класс Membership находится в пространстве System.Web.Security

  11. Класс Roles

  12. Регистрация провайдеров в приложении Провайдеры регистрируются в узлах <membership> и <roleManager> файла web.config. <connectionStrings> <addname="ArtMuseumDb"connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|ArtMuseum.mdf;Integrated Security=True;User Instance=True"providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <authenticationmode="Forms"> <formsloginUrl="~/Account/Login"timeout="2880" /> </authentication> <membershipdefaultProvider="DefaultMembershipProvider"> <providers> <addconnectionStringName="ArtMuseumDb"enablePasswordRetrieval="false"enablePasswordReset="true"requiresQuestionAndAnswer="false"requiresUniqueEmail="false"maxInvalidPasswordAttempts="5"minRequiredPasswordLength="6"minRequiredNonalphanumericCharacters="0"passwordAttemptWindow="10" applicationName="/"name="DefaultMembershipProvider"type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </providers> </membership> <roleManagerenabled="true"defaultProvider="DefaultRoleProvider"> <providers> <addconnectionStringName="DefaultConnection"applicationName="/"name="DefaultRoleProvider"type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </providers> </roleManager> … </system.web> √ √

  13. Управление членством и ролями при помощи WAT Меню Project / ASP.NET Configuration

  14. Классы из WebMatrix.WebData namespace System.Web.Sequrity MembershipProvider RoleProvider SimpleMembershipProvider SimpleRoleProvider static class WebSecurity Фасадным классом для SimpleMembershipProvider и SimpleRoleProviderявляется статический класс WebSecurity.

  15. Класс WebSecurity

  16. Регистрация провайдеров Если приложение MVC4 создано по шаблону Internet, провайдеры из WebMatrix зарегистрированы неявно. Их явная регистрация необходима для MVC3. <system.web> <membershipdefaultProvider="SimpleMembershipProvider"> <providers> <clear/> <addname="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/> </providers> </membership> <roleManagerenabled="true"defaultProvider="SimpleRoleProvider"> <providers> <clear/> <addname="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/> </providers> </roleManager> </system.web>

  17. Поддержка Forms Authentication в шаблоне приложения Модель – файл AccountModels.cs Контроллер – файл AccountController.cs Представление - папка Account Фильтр контроллера – файл Filters/InitializeSimpleMembershipAttribute.cs

  18. Как использовать существующую базу Пусть имеется готовая база данных в виде .mdf файла в папке App_Data. В web.config есть строка соединения с этой базой. Строка называется "MyConStr". • В /InitializeSimpleMembershipAttribute.cs приводим в соответствие с нашей базой вызов метода • WebSecurity.InitializeDatabaseConnection("DefaultConnection", • "UserProfile", "UserId", "UserName", autoCreateTables: true); • 2. Изменяем имя строки соединения с "DefaultConnection" на "MyConStr" • в файле ~Models/AccountModel.cs • в файле ~/Filters/InitializeSimpleMembershipAttribute.cs • Если нужны предустановленные пользователи и роли, создаем их после вызова InitializeDatabaseConnectionкодом вроде этого: string ROLE = "teacher", USER = "teacher1", PASS = "@teacher1"; if (!System.Web.Security.Roles.RoleExists(ROLE)) { System.Web.Security.Roles.CreateRole(ROLE); } if (!WebMatrix.WebData.WebSecurity.UserExists(USER)) { WebMatrix.WebData.WebSecurity.CreateUserAndAccount(USER, PASS); System.Web.Security.Roles.AddUserToRole(USER, ROLE); }

  19. Протокол ОAuth Позволяет использовать в приложении регистрационные данные социальных сетей: Facebook, Twitter, Microsoft, Google. Для этого создается учетная запись приложения и связывается с учетной записью в соц. сети. Важно, что процедура аутентификации выполняется не в приложении, а в социальной сети, т.е. пользователю не нужно вводить свои данные в вашем приложении.

  20. Реализация OAuth • В файле ~/App_Start/AuthConfig.csраскомментируем то, что относится к конкретным сетям. • Добываем в конкретной сетяи пару – Id, секретный код (для Google этого не требуется). • Если надо, исправляем класс UserProfileв файле AccountModels.cs, чтобы он соответствовал таблице пользователей в базе данных. [Table("Tutors")] publicclassUserProfile { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] publicintTutorId { get; set; } publicstringTutorName { get; set; } }

  21. Самостоятельно • Сделать так, чтобы в процессе регистрации пользователя вводился возраст пользователя (целое число от 1 до 150). Возраст должен сохраняться в столбце Age таблицы UserProfile.

  22. Самостоятельно • Создать MVC- проект и добавить два контроллера (Student и Teacher) и по одному представлению Index в каждый. • Сделать так, чтобы страницу Teacher/Index могли видеть только зарегистрированные пользователи в роли "teacher", а страницу Student/Index могли видеть только зарегистрированные пользователи в роли "student". • Сделать так, чтобы пользователь, прошедший аутентификацию, автоматически попадал на страницу Teacher/Index, если он teacher, и на страницу Student/Index, если он student.

More Related