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


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

После получения запроса от сервера клиент создает ответ на запрос Digest, вызывая функцию InitializeSecurityContext (Digest). Эта функция создает хэш-отпечаток MD5, используя сведения о запрошенном ресурсе и данные из запроса, и выводит маркер безопасности, представляющий частичный контекст безопасности. Чтобы завершить проверку подлинности, клиент должен вернуть маркер серверу, который выдал запрос.

В следующей таблице описаны параметры функцииInitializeSecurityContext (Digest) и значения, которые необходимо задать при создании ответа на запрос Digest.

Параметр Описание
fContextReq
Атрибуты контекста безопасности, запрашиваемые клиентом. Дополнительные сведения см. в разделе Digest Challenge Response Context Requirements.
pszTargetName
HTTP: строка, заканчивающаяся null, которая указывает целевой URL-адрес.
SASL: строка, заканчивающаяся значением NULL, указывающая целевой объект DNS/SPN.
pInput
Буферы, содержащие сведения, необходимые поставщику дайджест-служб. Дополнительные сведения см. в разделе Входные буферы для ответа на дайджест-вызов.
pfContextAttr
Получает атрибуты, поддерживаемые возвращенным контекстом безопасности. Дополнительные сведения см. в разделе Digest Challenge Response Context Requirements.
pOutput
Адрес буфера типа SECBUFFER_TOKEN, который получает маркер безопасности для отправки обратно на сервер.

Требования к контексту ответа на запросы digest

Требования к контексту — это флаги, определяющие:

  • Работает ли Microsoft Digest как механизм SASL или протокол проверки подлинности HTTP.
  • Качество защиты, поддерживаемого контекстом безопасности , совместно используемым клиентом и сервером.

По умолчанию Microsoft Digest работает как механизм SASL.

Требования к контексту указываются как флаги, передаваемые параметру fContextReq функции InitializeSecurityContext . Флаги влияют на качество защиты контекста безопасности, контролируя директиву qop в ответе на запрос.

По умолчанию директива qop имеет значение "auth". Чтобы создать ответ на запрос, который задает для параметра qop значение "auth-int", необходимо выполнить следующее:

  1. Для дайджест-запроса должна быть задана директива qop auth-int.

  2. Клиент должен указать один или несколько следующих флагов:

    • ISC_REQ_INTEGRITY
    • ISC_REQ_REPLAY_DETECT
    • ISC_REQ_SEQUENCE_DETECT

Только для SASL: создайте ответ на запрос с директивой qop auth-conf, указав флаг ISC_REQ_CONFIDENTIALITY. Так как этот флаг недопустим для проверки подлинности HTTP, его нельзя использовать с флагом ISC_REQ_HTTP.

Проверка качества защиты

Клиент должен проверить флаги атрибутов контекста безопасности, возвращаемые в параметре pfContextAttr функции InitializeSecurityContext. Клиент должен отправлять ответ на запрос на сервер только в том случае, если качество защиты, указанное флагами, достаточно для его целей. Соответствующие флаги могут быть любым сочетанием следующих:

  • ISC_RET_INTEGRITY
  • ISC_RET_REPLAY_DETECT
  • ISC_RET_SEQUENCE_DETECT
  • ISC_RET_CONFIDENTIALITY (только контексты SASL)

Дополнительные сведения о директиве qop см. в разделе Качество защиты и шифров.

Дополнительные сведения о директивах ответа на запрос см. в разделе Содержимое ответа на дайджест-вызов.