Аутентификация в ИнтернетеInternet Authentication

Классы System.Net поддерживают ряд механизмов проверки подлинности клиентов, включая стандартные методы проверки подлинности в Интернете: базовая проверка подлинности, дайджест-проверка подлинности, проверка подлинности согласованием, проверка подлинности NTLM, проверка подлинности Kerberos, а также создаваемые пользовательские методы.The System.Net classes support a variety of client authentication mechanisms, including the standard Internet authentication methods basic, digest, negotiate, NTLM, and Kerberos authentication, as well as custom methods that you can create.

Учетные данные проверки подлинности хранятся в классах NetworkCredential и CredentialCache, которые реализуют интерфейс ICredentials.Authentication credentials are stored in the NetworkCredential and CredentialCache classes, which implement the ICredentials interface. Когда один из этих классов запрашивается на предоставление учетных данных, он возвращает экземпляр класса NetworkCredential.When one of these classes is queried for credentials, it returns an instance of the NetworkCredential class. Процесс проверки подлинности управляется классом AuthenticationManager, а фактический процесс проверки подлинности выполняется классом модуля проверки подлинности, который реализует интерфейс IAuthenticationModule.The authentication process is managed by the AuthenticationManager class, and the actual authentication process is performed by an authentication module class that implements the IAuthenticationModule interface. Перед использованием необходимо зарегистрировать пользовательский модуль проверки подлинности с помощью AuthenticationManager. Модули для базовой проверки подлинности, дайджест-проверки подлинности, проверки подлинности согласованием, проверки подлинности NTLM, проверки подлинности Kerberos зарегистрированы по умолчанию.You must register a custom authentication module with the AuthenticationManager before it can be used; modules for the basic, digest, negotiate, NTLM, and Kerberos authentication methods are registered by default.

Класс NetworkCredential хранит набор учетных данных, связанных с одним интернет-ресурсом, определяемым по URI, и возвращает их в ответ на любой вызов метода GetCredential.NetworkCredential stores a set of credentials associated with a single Internet resource identified by a URI and returns them in response to any call to the GetCredential method. Класс NetworkCredential обычно используют приложения, которые обращаются к ограниченному числу интернет-ресурсов, или приложения, которые используют один набор учетных данных во всех случаях.The NetworkCredential class is typically used by applications that access a limited number of Internet resources or by applications that use the same set of credentials in all cases.

Класс CredentialCache хранит коллекцию учетных записей для различных веб-ресурсов.The CredentialCache class stores a collection of credentials for various Web resources. При вызове метода GetCredential класс CredentialCache возвращает правильный набор учетных данных, как это определяется URI веб-ресурса и запрошенной схемой проверки подлинности.When the GetCredential method is called, CredentialCache returns the proper set of credentials, as determined by the URI of the Web resource and the requested authentication scheme. Приложения, использующие множество интернет-ресурсов с разными схемами проверки подлинности, получают эффект от класса CredentialCache, поскольку он хранит все учетные записи и предоставляет их по запросу.Applications that use a variety of Internet resources with different authentication schemes benefit from using the CredentialCache class, since it stores all the credentials and provides them as requested.

Когда интернет-ресурс запрашивает проверку подлинности, метод WebRequest.GetResponse отправляет WebRequest в AuthenticationManager вместе с запросом учетных данных.When an Internet resource requests authentication, the WebRequest.GetResponse method sends the WebRequest to the AuthenticationManager along with the request for credentials. Затем запрос проходит проверку подлинности согласно следующей процедуре.The request is then authenticated according to the following process:

  1. AuthenticationManager вызывает метод Authenticate в каждом из зарегистрированных модулей проверки подлинности в порядке их регистрации.The AuthenticationManager calls the Authenticate method on each of the registered authentication modules in the order they were registered. AuthenticationManager использует первый модуль, который не возвращает null, для выполнения процесса проверки подлинности.The AuthenticationManager uses the first module that does not return null to carry out the authentication process. Детали процесса зависят от типа используемого модуля проверки подлинности.The details of the process vary depending on the type of authentication module involved.

  2. По завершении процесса проверки подлинности модуль проверки подлинности возвращает Authorization в класс WebRequest, содержащий сведения, необходимые для доступа к интернет-ресурсу.When the authentication process is complete, the authentication module returns an Authorization to the WebRequest that contains the information needed to access the Internet resource.

Некоторые схемы проверки могут проверять пользователя без выполнения запроса на доступ к ресурсу.Some authentication schemes can authenticate a user without first making a request for a resource. Приложение может сэкономить время за счет предварительной проверки подлинности пользователя на доступ к ресурсу, устраняя по меньшей мере один цикл обращения к серверу.An application can save time by preauthenticating the user with the resource, thus eliminating at least one round trip to the server. Или оно может провести проверку подлинности во время запуска программы для более оперативного реагирования на запросы пользователя позднее.Or, it can perform authentication during program startup in order to be more responsive to the user later. Схемы проверки подлинности, которые могут использовать предварительную проверку подлинности, задают для свойства PreAuthenticate значение true.Authentication schemes that can use preauthentication set the PreAuthenticate property to true.

См. такжеSee also