Проверка подлинности в Интернете

Классы System.Net поддерживают ряд механизмов проверки подлинности клиентов, включая стандартные методы проверки подлинности в Интернете: базовая проверка подлинности, дайджест-проверка подлинности, проверка подлинности согласованием, проверка подлинности NTLM, проверка подлинности Kerberos, а также создаваемые пользовательские методы.

Учетные данные проверки подлинности хранятся в классах NetworkCredential и CredentialCache, которые реализуют интерфейс ICredentials. Когда один из этих классов запрашивается на предоставление учетных данных, он возвращает экземпляр класса NetworkCredential. Процесс проверки подлинности управляется классом AuthenticationManager, а фактический процесс проверки подлинности выполняется классом модуля проверки подлинности, который реализует интерфейс IAuthenticationModule. Перед использованием необходимо зарегистрировать пользовательский модуль проверки подлинности с помощью AuthenticationManager. Модули для базовой проверки подлинности, дайджест-проверки подлинности, проверки подлинности согласованием, проверки подлинности NTLM, проверки подлинности Kerberos зарегистрированы по умолчанию.

Класс NetworkCredential хранит набор учетных данных, связанных с одним интернет-ресурсом, определяемым по URI, и возвращает их в ответ на любой вызов метода GetCredential. Класс NetworkCredential обычно используют приложения, которые обращаются к ограниченному числу интернет-ресурсов, или приложения, которые используют один набор учетных данных во всех случаях.

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

Когда интернет-ресурс запрашивает проверку подлинности, метод WebRequest.GetResponse отправляет WebRequest в AuthenticationManager вместе с запросом учетных данных. Затем запрос проходит проверку подлинности согласно следующей процедуре.

  1. AuthenticationManager вызывает метод Authenticate в каждом из зарегистрированных модулей проверки подлинности в порядке их регистрации. AuthenticationManager использует первый модуль, который не возвращает null, для выполнения процесса проверки подлинности. Детали процесса зависят от типа используемого модуля проверки подлинности.

  2. По завершении процесса проверки подлинности модуль проверки подлинности возвращает Authorization в класс WebRequest, содержащий сведения, необходимые для доступа к интернет-ресурсу.

Некоторые схемы проверки могут проверять пользователя без выполнения запроса на доступ к ресурсу. Приложение может сэкономить время за счет предварительной проверки подлинности пользователя на доступ к ресурсу, устраняя по меньшей мере один цикл обращения к серверу. Или оно может провести проверку подлинности во время запуска программы для более оперативного реагирования на запросы пользователя позднее. Схемы проверки подлинности, которые могут использовать предварительную проверку подлинности, задают для свойства PreAuthenticate значение true.

См. также