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


структура HTTP_REQUEST_AUTH_INFO (http.h)

Структура HTTP_REQUEST_AUTH_INFO содержит состояние проверки подлинности запроса с дескриптором маркера клиента, который принимающий процесс может использовать для олицетворения клиента, прошедшего проверку подлинности.

Эта структура содержится в структуре HTTP_REQUEST_INFO .

Синтаксис

typedef struct _HTTP_REQUEST_AUTH_INFO {
  HTTP_AUTH_STATUS       AuthStatus;
  SECURITY_STATUS        SecStatus;
  ULONG                  Flags;
  HTTP_REQUEST_AUTH_TYPE AuthType;
  HANDLE                 AccessToken;
  ULONG                  ContextAttributes;
  ULONG                  PackedContextLength;
  ULONG                  PackedContextType;
  PVOID                  PackedContext;
  ULONG                  MutualAuthDataLength;
  PCHAR                  pMutualAuthData;
  USHORT                 PackageNameLength;
  PWSTR                  pPackageName;
} HTTP_REQUEST_AUTH_INFO, *PHTTP_REQUEST_AUTH_INFO;

Члены

AuthStatus

Член перечисления HTTP_AUTH_STATUS , указывающий окончательное состояние проверки подлинности запроса.

Если состояние проверки подлинности не httpAuthStatusSuccess, приложения должны игнорировать элементы этой структуры, кроме AuthStatus, SecStatus и AuthType.

SecStatus

Значение SECURITY_STATUS , указывающее состояние сбоя системы безопасности, если элементОм AuthStatus является HttpAuthStatusFailure.

Flags

Флаги проверки подлинности, указывающие следующие атрибуты проверки подлинности:

attribute Значение
HTTP_REQUEST_AUTH_FLAG_TOKEN_FOR_CACHED_CRED
Предоставленный маркер предназначен для NTLM и основан на кэшированных учетных данных подключения Keep Alive (KA).

AuthType

Член перечисления HTTP_REQUEST_AUTH_TYPE , который указывает, что схема проверки подлинности была предпринята или установлена для запроса.

AccessToken

Дескриптор маркера клиента, который принимающий процесс может использовать для олицетворения клиента, прошедшего проверку подлинности.

Дескриптор маркера должен быть закрыт путем вызова CloseHandle , если он больше не требуется. Этот маркер действителен только в течение времени существования запроса. Приложения могут повторно создать первоначальный запрос 401 для повторной проверки подлинности по истечении срока действия маркера.

ContextAttributes

Атрибуты контекста клиента для маркера доступа.

PackedContextLength

Длина объекта PackedContext в байтах.

PackedContextType

Тип контекста в элементе PackedContext .

PackedContext

Контекст безопасности для типа проверки подлинности.

Приложения могут запрашивать атрибуты упакованного контекста, вызывая API запросов SSPI QueryContextAttributes . Однако приложения должны получить дескриптор учетных данных для пакета безопасности для указанного AuthType.

Приложение должно вызывать API-интерфейс SSPI FreeContextBuffer , чтобы освободить сериализованный контекст, когда он больше не требуется.

MutualAuthDataLength

Длина элемента pMutualAuthData в байтах.

pMutualAuthData

Данные взаимной проверки подлинности в кодировке Base64, используемые в заголовке WWW-Authenticate.

PackageNameLength

pPackageName

Комментарии

Начиная с ВЕРСИИ HTTP 2.0 структура HTTP_REQUEST содержит структуру HTTP_REQUEST_INFO . Элемент pVoid структуры HTTP_REQUEST_INFO указывает на HTTP_REQUEST_AUTH_INFO , если тип сведений о запросе — HttpRequestInfoTypeAuth.

Когда приложение получает запрос с такой структурой и запрос не прошел проверку подлинности, оно может отправить начальное задание 401 с нужным набором заголовков WWW-Authenticate в структуре HTTP_MULTIPLE_KNOWN_HEADERS . Когда API HTTP-сервера завершает подтверждение проверки подлинности, он заполняет структуру HTTP_REQUEST_AUTH_INFO и повторно передает его приложению с запросом. Дескриптор маркера доступа, представляющего удостоверение клиента, предоставляется в этой структуре API HTTP-сервера.

Атрибуты контекста

Элемент ContextAttributes предоставляется для схем на основе SSPI. Например, приложения SSPI могут определить, настроена ли ASC_RET_MUTUAL_AUTH для сеанса с взаимной проверкой подлинности.

API HTTP-сервера не предоставляет срок действия контекста в элементе PackedContext . Для приложений может потребоваться срок действия в определенных обстоятельствах, например, если включено кэширование учетных данных NTLM и приложение запрашивает время окончания срока действия для кэшированного контекста. Если серверное приложение требует истечения срока действия базового контекста клиента, связанного с маркером доступа, оно может получить упакованный контекст и вызвать QueryContextAttributes с SECPKG_ATTR_LIFESPAN.

Данные взаимной проверки подлинности

По умолчанию API HTTP-сервера обеспечивает добавление данных взаимной проверки подлинности в окончательный ответ 200. как правило, серверные приложения не несут ответственности за отправку данных взаимной проверки подлинности.

Однако приложения могут получать данные взаимной проверки подлинности и отправлять их с окончательным ответом. Если для элемента ReceiveMutualAuthструктуры HTTP_SERVER_AUTHENTICATION_INFO задано значение true, приложения получают учетные данные сервера для взаимной проверки подлинности вместе с запросом, прошедшим проверку подлинности.

Данные взаимной проверки подлинности, предоставленные в элементе pMutualAuthData , содержат точное значение заголовка WWW-Authenticate без имени заголовка. Например, pMutualAuthData указывает на "Negotiate ade02938481eca". Приложение создает заголовок WWW-Authenticate, добавляя предоставленный pMutualAuthData в качестве значения заголовка ответа.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Верхняя часть http.h

См. также раздел

Структуры API HTTP-сервера версии 2.0

HTTP_REQUEST_INFO

HTTP_REQUEST_V2