Аутентификация | Примеры С#

В этой статье вы найдете простой пример того, как создать собственный обработчик сообщений для веб-запроса со схемами проверки подлинности на основе пароля, такими как базовая, дайджест, NTLM и Kerberos.

Аутентификация – это процесс определения того, имеет ли клиент право доступа к ресурсу. Протокол HTTP поддерживает аутентификацию как средство согласования доступа к защищенному ресурсу. Во-первых, он проверяет учетные данные пользователя (имя пользователя и пароль). Если оба верны, то пользователь может войти в систему. Здесь кратко описаны несколько схем аутентификации для HTTP: базовая аутентификация, дайджест, NTLM и Kerberos.

Создание обработчика сообщений для базовой HTTP-аутентификации

Обычная аутентификация – это метод, с помощью которого пользовательский агент HTTP (например, веб-браузер) предоставляет имя пользователя и пароль при выполнении запроса. Давайте создадим собственный обработчик, который можно использовать для обычной аутентификации. Сделайте следующие шаги:

  1. Используйте необходимое пространство имен, которым является Aspose.Html.Net.
  2. Определите свой собственный класс CredentialHandler, который будет производным от класса MessageHandler.
  3. Переопределите метод Invoke(), чтобы реализовать собственное поведение обработчика сообщений.

В следующем фрагменте кода показано, как создать CredentialHandler для доступа к удаленному источнику с авторизацией с использованием базовой аутентификации HTTP:

 1using Aspose.Html.Net;
 2...
 3
 4    // This message handler used basic autentifications request
 5    public class CredentialHandler : MessageHandler
 6    {
 7        // Override the Invoke() method
 8        public override void Invoke(INetworkOperationContext context)
 9        {
10            context.Request.Credentials =  new NetworkCredential("username", "securelystoredpassword");
11            context.Request.PreAuthenticate = true;
12    
13            Next(context);
14        }
15    }

Он передает NetworkCredential объекту веб-запроса, который использует его для проверки подлинности запросов к интернет-серверу.

Добавление CredentialHandler в конвейер

Ключевой концепцией работы обработчиков сообщений является объединение их в цепочку. Мы создали CredentialHandler и должны добавить его в конвейер для реализации примера базовой HTTP-аутентификации. Рассмотрим следующий пример C#:

 1using Aspose.Html;
 2using Aspose.Html.Net;
 3using Aspose.Html.Services;
 4...
 5
 6	// Create an instance of the Configuration class
 7	using var configuration = new Configuration();
 8	
 9	// Add the CredentialHandler to the chain of existing message handlers
10	var service = configuration.GetService<INetworkService>();
11	var handlers = service.MessageHandlers;
12	handlers.Insert(0, new CredentialHandler());
13	
14	// Initialize an HTML document with specified configuration
15	using var document = new HTMLDocument("https://httpbin.org/basic-auth/username/securelystoredpassword", configuration);	
16 

Конструктор Configuration() инициализирует экземпляр класса Configuration. После создания конфигурации вызываются методы GetService () и MessageHandlers.Insert(). Метод Insert() добавляет CredentialHandler на первое место в наборе обработчиков сообщений. Используйте конструктор HTMLDocument(url, configuration) для инициализации HTML-документа и реализации примера для базовой HTTP-аутентификации.

Схемы аутентификации

Базовая аутентификация – Basic Authentication

Базовая аутентификация – это стандартный метод аутентификации, поддерживаемый HTTP-серверами и почти каждым веб-браузером, что делает его отличным методом контроля доступа.

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

Дайджест – Digest

Дайджест-аутентификация – это метод аутентификации, который веб-сервер может использовать для согласования учетных данных, таких как имя пользователя или пароль, с веб-браузером пользователя. Он предназначен для замены базовой аутентификации. Дайджест применяет хэш-функцию к имени пользователя и паролю перед их отправкой по сети. Хеширование данных затрудняет кражу учетных данных пользователя и их повторное использование с этой схемой аутентификации. Его можно использовать для проверки личности пользователя перед отправкой конфиденциальной информации, такой как история транзакций онлайн-банкинга.

NTLM

Аутентификация NTLM (New Technology LAN Manager) – это схема запроса-ответа, представляющая собой более безопасную версию дайджест-аутентификации. NTLM использует учетные данные Windows для преобразования данных запроса вместо незакодированного имени пользователя и пароля. Проверка подлинности NTLM требует нескольких обменов между клиентом и сервером. Сервер и любые промежуточные прокси должны поддерживать постоянные соединения для успешного завершения аутентификации.

Керберос – Kerberos

Kerberos – это протокол проверки подлинности компьютерной сети. Он разработан для обеспечения надежной аутентификации для запросов клиент/сервер с использованием криптографии с секретным ключом. Он был создан MIT как решение этих проблем сетевой безопасности. Протокол Kerberos считается безопасным. Он широко использовался на протяжении десятилетий и доказал свою безопасность в качестве механизма аутентификации пользователей. Kerberos использует надежную криптографию для защиты конфиденциальных данных.

Имя Керберос было взято из греческой мифологии. Кербер был трехголовым псом, охранявшим врата Аида. Три главы протокола Kerberos представляют клиента, сетевой ресурс и Центр распространения ключей (KDC), который является доверенной сторонней службой проверки подлинности Kerberos.

Вы можете скачать полные примеры и файлы данных с GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.