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


Создание ответа на вызов дайджеста

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

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

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

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

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

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

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

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

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

  1. Вызов Digest должен иметь директиву 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.

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

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

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

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

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