Общие сведения о безопасности и поддержка ASP.NET (C#)Security Basics and ASP.NET Support (C#)

по Скотт Митчеллby Scott Mitchell

Скачать в формате PDFDownload PDF

Это первый учебник из серии руководств, в которых рассматриваются методы проверки подлинности посетителей с помощью веб-формы, авторизации доступа к определенным страницам и функциональным возможностям, а также управления учетными записями пользователей в приложении ASP.NET.This is the first tutorial in a series of tutorials that will explore techniques for authenticating visitors through a web form, authorizing access to particular pages and functionality, and managing user accounts in an ASP.NET application.

ВведениеIntroduction

Что такое форумы, узлы электронной коммерции, веб-сайты электронных писем, веб-сайты портала и сайты социальных сетей, которые все чаще всего являются общими?What is the one thing forums, eCommerce sites, online email websites, portal websites, and social network sites all have in common? Все они предлагают учетные записи пользователей.They all offer user accounts. Сайты, которые предлагают учетные записи пользователей, должны предоставлять ряд служб.Sites that offer user accounts must provide a number of services. Как минимум, новые посетители должны иметь возможность создавать учетную запись и возвращать посетителей, которые должны иметь возможность войти в систему.At a minimum, new visitors need to be able to create an account and returning visitors must be able to log in. Такие веб-приложения могут принимать решения на основе вошедшего в систему пользователя: некоторые страницы или действия могут быть ограничены только пользователями, вошедшими в систему, или определенным набором пользователей. на других страницах могут отображаться сведения, относящиеся к вошедшему в систему пользователю, или может отображаться больше или меньше информации в зависимости от того, какой пользователь просматривает страницу.Such web applications can make decisions based on the logged in user: some pages or actions might be restricted to only logged in users, or to a certain subset of users; other pages might show information specific to the logged in user, or might show more or less information, depending on what user is viewing the page.

Это первый учебник из серии руководств, в которых рассматриваются методы проверки подлинности посетителей с помощью веб-формы, авторизации доступа к определенным страницам и функциональным возможностям, а также управления учетными записями пользователей в приложении ASP.NET.This is the first tutorial in a series of tutorials that will explore techniques for authenticating visitors through a web form, authorizing access to particular pages and functionality, and managing user accounts in an ASP.NET application. В рамках этих руководств мы рассмотрим, как:Over the course of these tutorials we will examine how to:

  • Выявление и регистрация пользователей на веб-сайтеIdentify and log users in to a website
  • Используйте технологию ASP. Инфраструктура членства NET для управления учетными записями пользователейUse ASP.NET's Membership framework to manage user accounts
  • Создание, обновление и удаление учетных записей пользователейCreate, update, and delete user accounts
  • Ограничение доступа к веб-странице, каталогу или конкретной функциональности на основе вошедшего в систему пользователяLimit access to a web page, directory, or specific functionality based on the logged in user
  • Используйте технологию ASP. Инфраструктура ролей NET для связывания учетных записей пользователей с ролямиUse ASP.NET's Roles framework to associate user accounts with roles
  • Управление ролями пользователейManage user roles
  • Ограничение доступа к веб-странице, каталогу или конкретной функциональности на основе роли пользователя, вошедшего в системуLimit access to a web page, directory, or specific functionality based on the logged in user's role
  • Настройка и расширение ASP. Веб-элементы управления безопасностью в сетиCustomize and extend ASP.NET's security Web controls

Эти учебники предназначены для краткости и содержат пошаговые инструкции с большим количеством снимков экрана для визуального анализа процесса.These tutorials are geared to be concise and provide step-by-step instructions with plenty of screen shots to walk you through the process visually. Каждый учебник доступен в C# и Visual Basic версий, а также содержит загрузку полного кода.Each tutorial is available in C# and Visual Basic versions and includes a download of the complete code used. (В этом первом учебнике основное внимание уделяется концепциям безопасности на высоком уровне точки зрения и, следовательно, не содержит никакого связанного кода.)(This first tutorial focuses on security concepts from a high-level viewpoint and therefore does not contain any associated code.)

В этом учебнике обсуждаются важные понятия безопасности и доступные в ASP.NET средства для реализации проверки подлинности с помощью форм, авторизации, учетных записей пользователей и ролей.In this tutorial we will discuss important security concepts and what facilities are available in ASP.NET to assist in implementing forms authentication, authorization, user accounts, and roles. Приступим.Let's get started!

Note

Безопасность — это важный аспект любого приложения, охватывающего физические, технологические и стратегииные решения, и требующий высокой степени планирования и знания предметной области.Security is an important aspect of any application that spans physical, technological, and policy decisions and requires a high degree of planning and domain knowledge. Эта серия руководств не предназначена в качестве руководства по разработке безопасных веб-приложений.This tutorial series is not intended as a guide for developing secure web applications. Вместо этого он предназначен специально для проверки подлинности на формах, авторизации, учетных записей пользователей и ролей.Rather, it focuses specifically on forms authentication, authorization, user accounts, and roles. Хотя некоторые концепции безопасности, в которых рассматриваются эти проблемы, обсуждаются в этой серии, другие остаются неисследованными.While some security concepts revolving around these issues are discussed in this series, others are left unexplored.

Проверка подлинности, авторизация, учетные записи пользователей и ролиAuthentication, Authorization, User Accounts, and Roles

Проверка подлинности, авторизация, учетные записи пользователей и роли — это четыре термина, которые будут использоваться в этой серии руководств очень часто, поэтому я хочу быстро определить эти термины в контексте веб-безопасности.Authentication, authorization, user accounts, and roles are four terms that will be used very often throughout this tutorial series, so I'd like to take a quick moment to define these terms within the context of web security. В модели "клиент-сервер", такой как Интернет, существует множество сценариев, в которых сервер должен распознать клиент, выполняющий запрос.In a client-server model, such as the Internet, there are many scenarios in which the server needs to identify the client making the request. Проверка подлинности — это процесс проверки удостоверения клиента.Authentication is the process of ascertaining the client's identity. Успешно идентифицированный клиент называется проверкой подлинности.A client who has been successfully identified is said to be authenticated. Считается, что неопознанный клиент не прошел проверку подлинности или является анонимным.An unidentified client is said to be unauthenticated or anonymous.

Защищенные системы проверки подлинности содержат по крайней мере один из следующих трех аспектов: что-то , что вы используете, или что-то другое.Secure authentication systems involve at least one of the following three facets: something you know, something you have, or something you are. Большинство веб-приложений полагаются на то, что клиент знает, например пароль или ПИН-код.Most web applications rely on something the client knows, such as a password or a PIN. Например, сведения, используемые для указания имени пользователя и пароля, называются учетными данными.The information used to identify a user - her username and password, for example - are referred to as credentials. Эта серия руководств посвящена проверке подлинностис помощью форм, которая представляет собой модель проверки подлинности, в которой пользователи входят на сайт, предоставляя свои учетные данные в форме веб-страницы.This tutorial series focuses on forms authentication, which is an authentication model where users log in to the site by providing their credentials in a web page form. Мы использовали этот тип проверки подлинности.We have all experienced this type of authentication before. Перейдите на любой сайт электронной коммерции.Go to any eCommerce site. Когда вы будете готовы к извлечению, вам будет предложено войти, введя имя пользователя и пароль в текстовые поля на веб-странице.When you are ready to check out you are asked to log in by entering your username and password into textboxes on a web page.

Помимо идентификации клиентов, серверу может потребоваться ограничить доступ к ресурсам или функциональным возможностям в зависимости от клиента, выполняющего запрос.In addition to identifying clients, a server may need to limit what resources or functionalities are accessible depending on the client making the request. Авторизация — это процесс определения того, имеет ли конкретный пользователь полномочия для доступа к определенному ресурсу или функциональности.Authorization is the process of determining whether a particular user has the authority to access a specific resource or functionality.

Учетная запись пользователя — это хранилище для сохранения сведений о конкретном пользователе.A user account is a store for persisting information about a particular user. Учетные записи пользователей должны по меньшей мере включать сведения, однозначно идентифицирующие пользователя, например имя входа пользователя и пароль.User accounts must minimally include information that uniquely identifies the user, such as the user's login name and password. Вместе с этими важными сведениями учетные записи пользователей могут включать такие вещи, как адрес электронной почты пользователя. Дата и время создания учетной записи; Дата и время последнего входа в систему; имя и фамилия; номер телефона; и почтовый адрес.Along with this essential information, user accounts may include things like: the user's email address; the date and time the account was created; the date and time they last logged in; first and last name; phone number; and mailing address. При использовании проверки подлинности с помощью форм сведения об учетных записях пользователей обычно хранятся в реляционной базе данных, например Microsoft SQL Server.When using forms authentication, user account information is typically stored in a relational database like Microsoft SQL Server.

Веб-приложения, поддерживающие учетные записи пользователей, могут при необходимости сгруппировать пользователей в роли.Web applications that support user accounts may optionally group users into roles. Роль — это просто метка, которая применяется к пользователю и предоставляет абстракцию для определения правил авторизации и функций на уровне страницы.A role is simply a label that is applied to a user and provides an abstraction for defining authorization rules and page-level functionality. Например, веб-сайт может содержать роль администратора с правилами авторизации, которая запрещает всем пользователям, кроме администратора, доступ к определенному набору веб-страниц.For example, a website might include an Administrator role with authorization rules that prohibit anyone but an Administrator to access a particular set of web pages. Более того, разнообразные страницы, доступные всем пользователям (включая пользователей, не являющихся администраторами), могут отображать дополнительные данные или предоставлять дополнительные функциональные возможности при посещении пользователями роли "Администраторы".Moreover, a variety of pages that are accessible to all users (including non-Administrators) might display additional data or offer extra functionality when visited by users in the Administrators role. С помощью ролей можно определить эти правила авторизации на основе ролей, а не пользователя.Using roles, we can define these authorization rules on a role-by-role basis rather than user-by-user.

Проверка подлинности пользователей в приложении ASP.NETAuthenticating Users in an ASP.NET Application

Когда пользователь вводит URL-адрес в окно адреса своего браузера или щелкает ссылку, браузер создает на веб-сервере запрос протокола HTTP для указанного содержимого, ASP.NET страницу, изображение, файл JavaScript или любой другой тип содержимого.When a user enters a URL into their browser's address window or clicks on a link, the browser makes a Hypertext Transfer Protocol (HTTP) request to the web server for the specified content, be it an ASP.NET page, an image, a JavaScript file, or any other type of content. Веб-сервер передается с возвратом запрошенного содержимого.The web server is tasked with returning the requested content. При этом он должен определить ряд моментов о запросе, в том числе о том, кто сделал запрос и является ли удостоверение полномочным для получения запрошенного содержимого.In doing so, it must determine a number of things about the request, including who made the request and whether the identity is authorized to retrieve the requested content.

По умолчанию браузеры отправляют HTTP-запросы, у которых отсутствуют данные идентификации.By default, browsers send HTTP requests that lack any sort of identification information. Но если браузер содержит сведения о проверке подлинности, веб-сервер запускает рабочий процесс проверки подлинности, который пытается опознать клиент, выполняющий запрос.But if the browser does include authentication information then the web server starts the authentication workflow, which attempts to identify the client making the request. Шаги рабочего процесса проверки подлинности зависят от типа проверки подлинности, используемой веб-приложением.The steps of the authentication workflow depend on the type of authentication being used by the web application. ASP.NET поддерживает три типа проверки подлинности: Windows, Passport и формы.ASP.NET supports three types of authentication: Windows, Passport, and forms. Эта серия руководств посвящена проверке подлинности с помощью форм, но давайте попробуем сравнить и сравните хранилища и рабочие процессы проверки подлинности Windows.This tutorial series focuses on forms authentication, but let's take a minute to compare and contrast Windows authentication user stores and workflow.

Аутентификация с помощью проверки подлинности WindowsAuthentication via Windows Authentication

Рабочий процесс проверки подлинности Windows использует один из следующих методов проверки подлинности:The Windows authentication workflow uses one of the following authentication techniques:

  • обычная проверка подлинностиBasic authentication
  • Дайджест-проверка подлинностиDigest authentication
  • Встроенная проверка подлинности WindowsWindows Integrated Authentication

Все три метода работают примерно так же: при получении неавторизованного анонимного запроса веб-сервер отправляет ответ HTTP, указывающий, что для продолжения требуется авторизация.All three techniques work in roughly the same way: when an unauthorized, anonymous request arrives, the web server sends back an HTTP response that indicates that authorization is required to continue. Затем в браузере отображается модальное диалоговое окно, предлагающее пользователю ввести имя пользователя и пароль (см. рис. 1).The browser then displays a modal dialog box that prompts the user for their username and password (see Figure 1). Затем эти сведения отправляются обратно на веб-сервер через заголовок HTTP.This information is then sent back to the web server via an HTTP header.

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

Рис. 1. модальное диалоговое окно, предлагающее пользователю ввести учетные данныеFigure 1: A Modal Dialog Box Prompts the User for His Credentials

Указанные учетные данные проверяются по хранилищу пользователя Windows веб-сервера.The supplied credentials are validated against the web server's Windows User Store. Это означает, что каждый прошедший проверку подлинности пользователь в веб-приложении должен иметь учетную запись Windows в вашей организации.This means that each authenticated user in your web application must have a Windows account in your organization. Это распространено в сценариях интрасети.This is commonplace in intranet scenarios. На самом деле, при использовании встроенной проверки подлинности Windows в интрасети браузер автоматически предоставляет веб-серверу учетные данные, используемые для входа в сеть, таким образом поблокируя диалоговое окно, показанное на рис. 1.In fact, when using Windows Integrated Authentication in an intranet setting, the browser automatically provides the web server with the credentials used to log on to the network, thereby suppressing the dialog box shown in Figure 1. Хотя проверка подлинности Windows отлично подходит для приложений интрасети, обычно это нецелесообразно для Интернет-приложений, так как вы не хотите создавать учетные записи Windows для каждого пользователя, который подписывается на ваш сайт.While Windows authentication is great for intranet applications, it is usually unfeasible for Internet applications since you do not want to create Windows accounts for each and every user who signs up at your site.

Проверка подлинности с помощью формAuthentication via Forms Authentication

С другой стороны, проверка подлинности с помощью форм идеально подходит для веб-приложений Интернета.Forms authentication, on the other hand, is ideal for Internet web applications. Помните, что проверка подлинности с помощью форм определяет пользователя, запрашивая учетные данные через веб-форму.Recall that forms authentication identifies the user by prompting them to enter their credentials through a web form. Следовательно, когда пользователь пытается получить доступ к неавторизованному ресурсу, он автоматически перенаправляется на страницу входа, где они могут ввести свои учетные данные.Consequently, when a user attempts to access an unauthorized resource, they are automatically redirected to the login page where they can enter their credentials. Затем отправленные учетные данные проверяются в пользовательском хранилище пользователя — обычно это база данных.The submitted credentials are then validated against a custom user store - usually a database.

После проверки отправленных учетных данных для пользователя создается билет проверки подлинности форм .After verifying the submitted credentials, a forms authentication ticket is created for the user. Этот билет указывает, что пользователь прошел проверку подлинности и содержит идентификационные данные, например имя пользователя.This ticket indicates that the user has been authenticated and includes identifying information, such as the username. Билет проверки подлинности форм (обычно) хранится в виде файла cookie на клиентском компьютере.The forms authentication ticket is (typically) stored as a cookie on the client computer. Таким образом, последующие посещения веб-сайта включают билет проверки подлинности форм в HTTP-запросе, тем самым позволяя веб-приложению обнаруживать пользователя после входа в систему.Therefore, subsequent visits to the website include the forms authentication ticket in the HTTP request, thereby enabling the web application to identify the user once they have logged in.

На рис. 2 показан рабочий процесс проверки подлинности с помощью форм с разных точки высокого уровня.Figure 2 illustrates the forms authentication workflow from a high-level vantage point. Обратите внимание, как части проверки подлинности и авторизации в ASP.NET работают как две отдельные сущности.Notice how the authentication and authorization pieces in ASP.NET act as two separate entities. Система проверки подлинности форм определяет пользователя (или сообщает, что он является анонимным).The forms authentication system identifies the user (or reports that they are anonymous). Система авторизации определяет, имеет ли пользователь доступ к запрошенному ресурсу.The authorization system is what determines whether the user has access to the requested resource. Если пользователь не авторизован (как на рис. 2 при попытке анонимно посетить Протектедпаже. aspx), система авторизации сообщает, что пользователю отказано, в результате чего система проверки подлинности форм автоматически перенаправит пользователя на страницу входа.If the user is unauthorized (as they are in Figure 2 when attempting to anonymously visit ProtectedPage.aspx), the authorization system reports that the user is denied, causing the forms authentication system to automatically redirect the user to the login page.

После успешного входа пользователя последующие HTTP-запросы включают билет проверки подлинности с помощью форм.Once the user has successfully logged in, subsequent HTTP requests include the forms authentication ticket. Система проверки подлинности форм просто идентифицирует пользователя — это система авторизации, которая определяет, может ли пользователь получить доступ к запрошенному ресурсу.The forms authentication system merely identifies the user - it is the authorization system that determines whether the user can access the requested resource.

Рабочий процесс проверки подлинности с помощью форм

Рис. 2. Рабочий процесс проверки подлинности с помощью формFigure 2: The Forms Authentication Workflow

В следующих двух руководствах мы подробно рассмотрим проверку подлинности с помощью форм, а такжеОбщие сведения о проверке подлинности с помощью форм и настройке проверки подлинности форм и дополнительных разделах.We will dig into forms authentication in much greater detail in the next two tutorials,An Overview of Forms Authentication and Forms Authentication Configuration and Advanced Topics. Дополнительные сведения об ASP см. здесь. Параметры проверки подлинности NET см. в разделе ASP.NET Authentication.For more on ASP.NET's authentication options, see ASP.NET Authentication.

Ограничение доступа к веб-страницам, каталогам и функциональным возможностям страницLimiting Access to Web Pages, Directories, and Page Functionality

ASP.NET включает два способа определения того, имеет ли конкретный пользователь полномочия на доступ к определенному файлу или каталогу:ASP.NET includes two ways to determine whether a particular user has authority to access a specific file or directory:

  • Авторизация файлов . так как ASP.NET страницы и веб-службы реализуются как файлы, которые находятся в файловой системе веб-сервера, доступ к этим файлам можно указать с помощью списков управления доступом (ACL).File authorization - since ASP.NET pages and web services are implemented as files that reside on the web server's file system, access to these files can be specified through Access Control Lists (ACLs). Авторизация файлов чаще всего используется с проверкой подлинности Windows, так как списки управления доступом (ACL) применяются к учетным записям Windows.File authorization is most commonly used with Windows authentication because ACLs are permissions that apply to Windows accounts. При использовании проверки подлинности с помощью форм все запросы на уровне операционной системы и файловой системы выполняются одной и той же учетной записью Windows независимо от пользователя, который посещает сайт.When using forms authentication, all operating system- and file system-level requests are executed by the same Windows account, regardless of the user visiting the site.
  • Авторизация URL-адреса. при авторизации по URL-адресу разработчик страницы задает правила авторизации в файле Web. config. Эти правила авторизации определяют, к каким пользователям или ролям разрешен доступ или которым запрещен доступ к определенным страницам или каталогам в приложении.URL authorization- with URL authorization, the page developer specifies authorization rules in Web.config. These authorization rules specify what users or roles are allowed to access or are denied from accessing certain pages or directories in the application.

Авторизация файлов и авторизация по URL-адресу определяют правила авторизации для доступа к определенной странице ASP.NET или для всех ASP.NET страниц в определенном каталоге.File authorization and URL authorization define authorization rules for accessing a particular ASP.NET page or for all ASP.NET pages in a particular directory. С помощью этих методов можно указать ASP.NET отклонять запросы к определенной странице конкретного пользователя или разрешить доступ к набору пользователей и запретить доступ всем остальным пользователям.Using these techniques we can instruct ASP.NET to deny requests to a particular page for a particular user, or allow access to a set of users and deny access to everyone else. Как насчет сценариев, в которых все пользователи могут получить доступ к странице, но функциональность страницы зависит от пользователя?What about scenarios where all of the users can access the page, but the page's functionality depends on the user? Например, многие сайты, которые поддерживают учетные записи пользователей, имеют страницы, отображающие разные содержимое или данные для пользователей, прошедших проверку подлинности, и анонимных пользователей.For example, many sites that support user accounts have pages that display different content or data for authenticated users versus anonymous users. Анонимный пользователь может увидеть ссылку для входа на сайт, в то время как прошедший проверку подлинности пользователь увидит сообщение, например, Добро пожаловать, имя пользователя и ссылку для выхода из нее. Еще один пример: при просмотре элемента на веб-сайте аукциона отображаются различные сведения в зависимости от того, является ли вы тендером или аукционом товара.An anonymous user might see a link to log in to the site, whereas an authenticated user would instead see a message like, Welcome back, Username along with a link to log out. Another example: when viewing an item at an auction site you see different information depending on whether you are a bidder or the one auctioning the item.

Такие корректировки на уровне страницы можно выполнять декларативно или программно.Such page-level adjustments can be accomplished declaratively or programmatically. Чтобы отобразить другое содержимое для анонимных пользователей, а не прошедших проверку, просто перетащите элемент управления LoginView на страницу и введите соответствующее содержимое в его шаблоны Анонимаустемплате и логжединтемплате.To show different content for anonymous than authenticated users, simply drag a LoginView control onto your page and enter the appropriate content into its AnonymousTemplate and LoggedInTemplate templates. Кроме того, можно программно определить, прошел ли текущий запрос проверку подлинности, кто является пользователем и какие роли они принадлежат (если есть).Alternatively, you can programmatically determine whether the current request is authenticated, who the user is, and what roles they belong to (if any). Эти сведения можно использовать для отображения или скрытия столбцов в сетке или на панелях страницы.You can use this information to then show or hide columns in a grid or Panels on the page.

Эта серия включает в себя три руководства, которые касаются авторизации.This series includes three tutorials that focus on authorization. Авторизация на основе пользователейпроверяет, как ограничить доступ к странице или страницам в каталоге для конкретных учетных записей пользователей. Авторизация на основе ролей рассматривает предоставление правил авторизации на уровне роли. Наконец, Отображение содержимого на основе текущего пользователя в учебнике посвящено изменению содержимого и функциональных возможностей конкретной страницы в зависимости от пользователя, который посещает страницу.User-Based Authorizationexamines how to limit access to a page or pages in a directory for specific user accounts; Role-Based Authorization looks at supplying authorization rules at the role level; lastly, the Displaying Content Based on the Currently Logged In User tutorial explores modifying a particular page's content and functionality based on the user visiting the page. Дополнительные сведения об ASP см. здесь. Параметрах авторизации NET см. в разделе ASP.NET Authorization.For more on ASP.NET's authorization options, see ASP.NET Authorization.

Учетные записи пользователей и ролиUser Accounts and Roles

Сценарии. Проверка подлинности с помощью форм NET предоставляет пользователям инфраструктуру для входа на сайт и проверки их подлинности при посещении страниц.ASP.NET's forms authentication provides an infrastructure for users to log in to a site and have their authenticated state remembered across page visits. И авторизация URL-адресов предлагает платформу для ограничения доступа к конкретным файлам или папкам в приложении ASP.NET.And URL authorization offers a framework for limiting access to specific files or folders in an ASP.NET application. Ни одна из этих функций не предоставляет средств для хранения сведений об учетных записях пользователей или управления ролями.Neither feature, however, supplies a means for storing user account information or managing roles.

До ASP.NET 2,0 разработчики отвечали за создание собственных хранилищ пользователей и ролей.Prior to ASP.NET 2.0, developers were responsible for creating their own user and role stores. Они также были в обработчике для разработки пользовательских интерфейсов и написания кода для наиболее ценных страниц, связанных с учетной записью пользователя, таких как страница входа и страница для создания новой учетной записи.They were also on the hook for designing the user interfaces and writing the code for essential user account-related pages like the login page and the page to create a new account, among others. Без встроенной инфраструктуры учетных записей пользователей в ASP.NET каждый разработчик, реализующий учетные записи пользователей, должен был принять собственные решения по проектированию на таких вопросах, как, Разделы справки хранить пароли или другие конфиденциальные сведения? и какие рекомендации следует применить к длине и надежности пароля?Without any built-in user account framework in ASP.NET, each developer implementing user accounts had to arrive at his own design decisions on questions like, How do I store passwords or other sensitive information? and What guidelines should I impose regarding password length and strength?

Сейчас реализация учетных записей пользователей в приложении ASP.NET гораздо проще благодаря инфраструктуре членства и встроенным веб-элементам управления для входа.Today, implementing user accounts in an ASP.NET application is much simpler thanks to the Membership framework and the built-in Login Web controls. Платформа членства — это несколько классов в пространстве имен System. Web. Security , которые предоставляют функциональные возможности для выполнения необходимых задач, связанных с учетной записью пользователя.The Membership framework is a handful of classes in the System.Web.Security namespace that provide functionality for performing essential user account-related tasks. Ключевым классом в структуре членства является класс членства, который имеет такие методы, как:The key class in the Membership framework is the Membership class, which has methods like:

  • CreateUserCreateUser
  • DeleteUserDeleteUser
  • жеталлусерсGetAllUsers
  • GetUserGetUser
  • упдатеусерUpdateUser
  • ValidateUserValidateUser

Платформа членства использует модель поставщика, которая в своей реализации четко отделяет API инфраструктуры членства.The Membership framework uses the provider model, which cleanly separates the Membership framework's API from its implementation. Это позволяет разработчикам использовать общий API, но предоставляет им возможность использовать реализацию, которая соответствует пользовательским потребностям приложения.This enables developers to use a common API, but empowers them to use an implementation that meets their application's custom needs. Вкратце, класс членства определяет необходимые функции платформы (методы, свойства и события), но на самом деле не предоставляет никаких сведений о реализации.In short, the Membership class defines the essential functionality of the framework (the methods, properties, and events), but does not actually supply any implementation details. Вместо этого методы класса членства вызывают настроенный поставщик, который выполняет фактическую работу.Instead, the methods of the Membership class invoke the configured provider, which is what performs the actual work. Например, при вызове метода CreateUser класса членства класс членства не знает сведения о хранилище пользователя.For example, when the Membership class's CreateUser method is invoked, the Membership class doesn't know the details of the user store. Он не знает, хранятся ли пользователи в базе данных или в XML-файле или в другом хранилище.It doesn't know if users are being maintained in a database or in an XML file or in some other store. Класс членства проверяет конфигурацию веб-приложения, чтобы определить, какой поставщик делегирует вызов, и этот класс поставщика отвечает за фактическое создание новой учетной записи пользователя в соответствующем хранилище пользователей.The Membership class examines the web application's configuration to determine what provider to delegate the call to, and that provider class is responsible for actually creating the new user account in the appropriate user store. Это взаимодействие показано на рис. 3.This interaction is illustrated in Figure 3.

Корпорация Майкрософт поставляет два класса поставщиков членства в .NET Framework:Microsoft ships two Membership provider classes in the .NET Framework:

В этой серии руководств основное внимание уделяется исключительно SqlMembershipProvider.This tutorial series focuses exclusively on the SqlMembershipProvider.

модель поставщика позволяет легко подключать различные реализации к платформе</strong>The Provider Model Enables Different Implementations to be Seamlessly Plugged Into the Framework</strong>

Рис. 03. модель поставщика позволяет легко подключать различные реализации к платформе (щелкните, чтобы просмотреть изображение с полным размером)Figure 03: The Provider Model Enables Different Implementations to be Seamlessly Plugged Into the Framework (Click to view full-size image)

Преимущество модели поставщика заключается в том, что альтернативные реализации могут разрабатываться корпорацией Майкрософт, сторонними поставщиками или отдельными разработчиками и легко подключенными к инфраструктуре членства.The benefit of the provider model is that alternative implementations can be developed by Microsoft, third-party vendors, or individual developers and seamlessly plugged into the Membership framework. Например, корпорация Майкрософт выпустила поставщик членства для баз данных Microsoft Access.For example, Microsoft has released a Membership provider for Microsoft Access databases. Дополнительные сведения о поставщиках членства см. в наборе средств поставщика, который включает в себя пошаговое руководство по поставщикам членства, примеры пользовательских поставщиков, более 100 страниц документации по модели поставщика и полный исходный код для встроенных поставщиков членства (а именно, Активедиректоримембершиппровидер и SqlMembershipProvider).For more information on the Membership providers, refer to the Provider Toolkit, which includes a walkthrough of the Membership providers, sample custom providers, over 100 pages of documentation on the provider model, and the complete source code for the built-in Membership providers (namely, ActiveDirectoryMembershipProvider and SqlMembershipProvider).

В ASP.NET 2,0 также появилась платформа ролей.ASP.NET 2.0 also introduced the Roles framework. Как и в случае с инфраструктурой членства, инфраструктура ролей строится на основе модели поставщика.Like the Membership framework, the Roles framework is built atop the provider model. Его API предоставляется через класс Roles , а .NET Framework поставляется с тремя классами поставщиков:Its API is exposed via the Roles class and the .NET Framework ships with three provider classes:

В этой серии руководств основное внимание уделяется исключительно Склролепровидер.This tutorial series focuses exclusively on the SqlRoleProvider.

Так как модель поставщика включает в себя один прямой интерфейс API (классы членства и ролей), можно создавать функциональные возможности этого API, не беспокоясь о деталях реализации, которые обрабатываются поставщиками, выбранными страницей. Developer.Since the provider model includes a single forward-facing API (the Membership and Roles classes), it is possible to build functionality around that API without having to worry about the implementation details - those are handled by the providers selected by the page developer. Этот унифицированный API позволяет поставщикам Майкрософт и сторонним производителям создавать веб-элементы управления, взаимокоторые с платформами членства и ролей.This unified API allows for Microsoft and third-party vendors to build Web controls that interface with the Membership and Roles frameworks. ASP.NET поставляется с несколькими веб-элементами управления для входа для реализации общих пользовательских интерфейсов учетных записей.ASP.NET ships with a number of Login Web controls for implementing common user account user interfaces. Например, элемент управления Login запрашивает у пользователя учетные данные, проверяет их, а затем записывает в журнал, используя проверку подлинности с помощью форм.For example, the Login control prompts a user for their credentials, validates them, and then logs them in via forms authentication. Элемент управления LoginView предлагает шаблоны для отображения разметки для анонимных пользователей и пользователей, прошедших проверку подлинности, или другой разметки в зависимости от роли пользователя.The LoginView control offers templates for displaying different markup to anonymous users versus authenticated users, or different markup based on the user's role. А элемент управления CreateUserWizard предоставляет пошаговый пользовательский интерфейс для создания новой учетной записи пользователя.And the CreateUserWizard control provides a step-by-step user interface for creating a new user account.

Под ним рассматриваются различные элементы управления входа, взаимодействующие с платформами членства и ролей.Underneath the covers the various Login controls interact with the Membership and Roles frameworks. Большинство элементов управления входом может быть реализовано без написания одной строки кода.Most Login controls can be implemented without having to write a single line of code. Мы рассмотрим эти элементы управления более подробно в следующих учебных курсах, включая методы расширения и настройки функциональности.We will examine these controls in greater detail in future tutorials, including techniques for extending and customizing their functionality.

СводкаSummary

Для всех веб-приложений, которые поддерживают учетные записи пользователей, требуются аналогичные функции, например: возможность входа пользователей и состояние их входа в систему при посещении страниц; веб-страница для новых посетителей, позволяющая создать учетную запись; и возможность разработчику страницы указать, какие ресурсы, данные и функции доступны для пользователей или ролей.All web applications that support user accounts require similar features, such as: the ability for users to log in and have their log in status remembered across page visits; a web page for new visitors to create an account; and the ability to the page developer to specify what resource, data, and functionality are available to what users or roles. Задачи проверки подлинности и авторизации пользователей, а также управления учетными записями и ролями пользователей с помощью ASP.NET приложений благодаря проверке подлинности с помощью форм, авторизации URL-адресов и инфраструктуре членства и ролей.The tasks of authenticating and authorizing users and of managing user accounts and roles is remarkably easy to accomplish in ASP.NET applications thanks to forms authentication, URL authorization, and the Membership and Roles frameworks.

В следующих нескольких учебных курсах мы рассмотрим эти аспекты, создав рабочее веб-приложение с самого начала в пошаговом режиме.Over the course of the next several tutorials we will examine these aspects by building a working web application from the ground up in a step-by-step fashion. В следующих двух учебных курсах подробно рассматривается проверка подлинности с помощью форм.In the next two tutorial we will explore forms authentication in detail. Мы увидим рабочий процесс проверки подлинности на основе форм, закрепить билет проверки подлинности форм, расскажу о вопросах безопасности и настроим систему проверки подлинности с помощью форм. все это можно делать во время создания веб-приложения, позволяющего посетителям входить в систему и выходить из нее.We will see the forms authentication workflow in action, dissect the forms authentication ticket, discuss security concerns, and see how to configure the forms authentication system - all while building a web application that allows visitors to log in and log out.

Поздравляем с программированием!Happy Programming!

Дополнительные материалыFurther Reading

Дополнительные сведения о разделах, обсуждаемых в этом руководстве, см. в следующих ресурсах:For more information on the topics discussed in this tutorial, refer to the following resources:

Об автореAbout the Author

Скотт Митчелл, автор семи книг по ASP/ASP. NET и основатель 4GuysFromRolla.com, работал с веб-технологиями Майкрософт с 1998.Scott Mitchell, author of seven ASP/ASP.NET books and founder of 4GuysFromRolla.com, has been working with Microsoft Web technologies since 1998. Скотт работает как независимый консультант, преподаватель и модуль записи.Scott works as an independent consultant, trainer, and writer. Его последняя книга — Sams обучать себя ASP.NET 2,0 за 24 часа.His latest book is Sams Teach Yourself ASP.NET 2.0 in 24 Hours. Он доступен по адресу mitchell@4GuysFromRolla.com.He can be reached at mitchell@4GuysFromRolla.com. или через его блог, который можно найти по адресу http://ScottOnWriting.NET.or via his blog, which can be found at http://ScottOnWriting.NET.

Специальная благодарностьSpecial Thanks To

Эта серия руководств была рассмотрена многими полезными рецензентами.This tutorial series was reviewed by many helpful reviewers. В ходе работы с этим руководством мы рассматривали все полезные рецензенты.Lead reviewer for this tutorial was This tutorial series was reviewed by many helpful reviewers. Потенциальные рецензенты для этого руководства включают в себя Аликжа Мазиарз, Джон суру и Терезой Мерфи.Lead reviewers for this tutorial include Alicja Maziarz, John Suru, and Teresa Murphy. Хотите ознакомиться с моими будущими статьями MSDN?Interested in reviewing my upcoming MSDN articles? Если это так, расположите строку в mitchell@4GuysFromRolla.com.If so, drop me a line at mitchell@4GuysFromRolla.com.