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


Протокол дайджест-доступа

Протокол Digest Access, заданный RFC 2617 , реализуется поставщиком поддержки безопасности Microsoft Digest (SSP). Реализация состоит из набора функций контекста безопасности интерфейса поставщика поддержки безопасности (SSPI), которые вызывают клиентские и серверные приложения:

Проверка подлинности Digest Access выполняется в рамках парных транзакций запросов и ответов, при этом запросы исходят от клиента и ответы на сервере. Для успешной проверки подлинности Digest Access требуется две пары "запрос-ответ".

При использовании дайджест-поставщика общих служб для проверки подлинности HTTP связь между первой и второй парой "запрос-ответ" не поддерживается. Другими словами, сервер не ожидает второго запроса после отправки первого ответа.

На следующем рисунке показаны шаги, выполняемые клиентом и сервером по ПУТИ HTTP для выполнения проверки подлинности с помощью дайджест-поставщика общих служб. Механизм SASL использует взаимную проверку подлинности, поэтому данные проверки подлинности отправляются обратно при окончательном вызове сервера ASC клиенту, который проверяет, взаимодействует ли клиент с правильным сервером.

Протокол дайджест-доступа

Процесс начинается с того, что клиент запрашивает ресурс, защищенный доступом, с сервера, отправляя HTTP-запрос 1.

Сервер получает HTTP-запрос 1 и определяет, что ресурсу требуются сведения о проверке подлинности, которые не были включены в запрос. Сервер создает запрос для клиента следующим образом:

  1. Сервер получает свои учетные данные путем вызова функции AcquireCredentialsHandle .
  2. Сервер создает дайджест-запрос, вызывая функцию AcceptSecurityContext (General).
  3. Сервер отправляет заголовок WWW-Authenticate в качестве ответа на запрос клиента (отображается как HTTP-ответ 1). Заголовок содержит хэш-запрос и непрозрачную директиву, содержащую ссылку на частичный контекст безопасности , установленный для клиента. Заголовок отправляется с кодом состояния 401, который указывает, что запрос клиента вызвал ошибку несанкционированного доступа. Дополнительные сведения о дайджест-вызове см. в разделах Содержимое дайджест-запроса и Создание дайджест-запроса.
  4. Клиент получает HTTP-ответ 1, извлекает хэш-запрос, отправленный сервером, и создает ответ на запрос Digest следующим образом:
    1. Учетные данные пользователя получаются путем вызова функции AcquireCredentialsHandle или путем интерактивного запроса учетных данных пользователя.
    2. Сведения о запросе и учетных данных передаются в функцию InitializeSecurityContext (Общее), которая создает ответ на дайджест-запрос.
  5. Клиент отправляет заголовок авторизации, содержащий ответ на запрос на сервер (отображается как HTTP-запрос 2). Дополнительные сведения об ответе на дайджест-запрос см. в разделах Содержимое ответа на дайджест-вызов и Создание ответа на дайджест-вызов.
  6. Сервер получает HTTP-запрос 2, извлекает ответ на запрос, отправленный клиентом, и проверяет подлинность сведений, вызывая функцию AcceptSecurityContext (General). Дополнительные сведения о процессе проверки подлинности см. в разделе Начальная проверка подлинности с помощью Microsoft Digest.
  7. Сервер отправляет клиенту HTTP-ответ 2 в качестве второго и окончательного ответа, требуемого протоколом Digest Access. Если проверка подлинности выполнена успешно, этот ответ содержит запрошенный ресурс.

Содержимое ответа на запрос дайджеста