estructura HTTP_REQUEST_AUTH_INFO (http.h)

La estructura de HTTP_REQUEST_AUTH_INFO contiene el estado de autenticación de la solicitud con un identificador para el token de cliente que el proceso receptor puede usar para suplantar al cliente autenticado.

Esta estructura se encuentra en la estructura HTTP_REQUEST_INFO .

Sintaxis

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;

Miembros

AuthStatus

Miembro de la enumeración HTTP_AUTH_STATUS que indica el estado de autenticación final de la solicitud.

Si el estado de autenticación no es HttpAuthStatusSuccess, las aplicaciones deben ignorar los miembros de esta estructura, excepto AuthStatus, SecStatus y AuthType.

SecStatus

Valor de SECURITY_STATUS que indica el estado de error de seguridad cuando el miembro AuthStatus es HttpAuthStatusFailure.

Flags

Marcas de autenticación que indican los siguientes atributos de autenticación:

Atributo Significado
HTTP_REQUEST_AUTH_FLAG_TOKEN_FOR_CACHED_CRED
El token proporcionado es para NTLM y se basa en una credencial almacenada en caché de una conexión Keep Alive (KA).

AuthType

Miembro de la enumeración HTTP_REQUEST_AUTH_TYPE que indica el esquema de autenticación intentado o establecido para la solicitud.

AccessToken

Identificador del token de cliente que el proceso de recepción puede usar para suplantar al cliente autenticado.

El identificador del token debe cerrarse llamando a CloseHandle cuando ya no sea necesario. Este token solo es válido durante la vigencia de la solicitud. Las aplicaciones pueden volver a generar el desafío 401 inicial para volver a autenticarse cuando expire el token.

ContextAttributes

Atributos de contexto de cliente para el token de acceso.

PackedContextLength

Longitud, en bytes, de PackedContext.

PackedContextType

Tipo de contexto en el miembro PackedContext .

PackedContext

Contexto de seguridad del tipo de autenticación.

Las aplicaciones pueden consultar los atributos del contexto empaquetado mediante una llamada a la API QueryContextAttributes de SSPI. Sin embargo, las aplicaciones deben adquirir un identificador de credenciales para el paquete de seguridad para el AuthType indicado.

La aplicación debe llamar a la API FreeContextBuffer de SSPI para liberar el contexto serializado cuando ya no sea necesario.

MutualAuthDataLength

Longitud, en bytes, del miembro pMutualAuthData .

pMutualAuthData

Los datos de autenticación mutua codificados en Base64 usados en el encabezado WWW-Authenticate.

PackageNameLength

pPackageName

Comentarios

A partir de http versión 2.0, la estructura de HTTP_REQUEST contiene una estructura de HTTP_REQUEST_INFO . El miembro pVoid de la estructura HTTP_REQUEST_INFO apunta al HTTP_REQUEST_AUTH_INFO cuando el tipo de información de solicitud es HttpRequestInfoTypeAuth.

Cuando la aplicación recibe una solicitud con esta estructura y la solicitud no se ha autenticado, puede enviar el desafío 401 inicial con el conjunto deseado de encabezados de WWW-Authenticate en la estructura HTTP_MULTIPLE_KNOWN_HEADERS . Cuando la API del servidor HTTP completa el protocolo de enlace de autenticación, rellena la estructura de HTTP_REQUEST_AUTH_INFO y la pasa a la aplicación de nuevo con la solicitud. La API de servidor HTTP proporciona el identificador del token de acceso que representa la identidad de cliente en esta estructura.

Atributos de contexto

El miembro ContextAttributes se proporciona para esquemas basados en SSPI. Por ejemplo, las aplicaciones SSPI pueden determinar si se establece ASC_RET_MUTUAL_AUTH para una sesión autenticada mutuamente.

La API del servidor HTTP no proporciona la hora de expiración del contexto en el miembro PackedContext . Las aplicaciones pueden requerir la hora de expiración en circunstancias específicas, por ejemplo, cuando se habilita el almacenamiento en caché de credenciales NTLM y la aplicación consulta la hora de expiración de un contexto almacenado en caché. Si la aplicación de servidor requiere la hora de expiración del contexto de cliente subyacente asociado al token de acceso, puede recibir el contexto empaquetado y llamar a QueryContextAttributes con el SECPKG_ATTR_LIFESPAN.

Datos de autenticación mutua

De forma predeterminada, la API de servidor HTTP garantiza que los datos de autenticación mutua se agreguen a la respuesta final de 200; en general, las aplicaciones de servidor no son responsables de enviar los datos de autenticación mutua.

Sin embargo, las aplicaciones pueden recibir los datos de autenticación mutua y enviarlos con la respuesta final. Cuando el miembro ReceiveMutualAuth de la estructura de HTTP_SERVER_AUTHENTICATION_INFO se establece en true, las aplicaciones reciben las credenciales del servidor para la autenticación mutua junto con la solicitud autenticada.

Los datos de autenticación mutua proporcionados en el miembro pMutualAuthData contienen el valor exacto de WWW-Authenticate encabezado sin el nombre del encabezado. Por ejemplo, pMutualAuthData apunta a "Negotiate ade02938481eca". La aplicación compila el encabezado WWW-Authenticate anexando el valor de encabezado pMutualAuthData proporcionado como un valor de encabezado de respuesta.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Encabezado http.h

Consulte también

Estructuras de la API de servidor HTTP versión 2.0

HTTP_REQUEST_INFO

HTTP_REQUEST_V2