Поделиться через


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

Классы System.Net поддерживают различные механизмы проверки подлинности клиента, включая стандартные методы проверки подлинности в Интернете: basic, digest, negotiate, 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веб-запрос, в котором содержатся сведения, необходимые для доступа к интернет-ресурсу.

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

См. также