Partager via


HTTP_REQUEST_AUTH_INFO structure (http.h)

La structure HTTP_REQUEST_AUTH_INFO contient le status d’authentification de la demande avec un handle pour le jeton client que le processus de réception peut utiliser pour emprunter l’identité du client authentifié.

Cette structure est contenue dans la structure HTTP_REQUEST_INFO .

Syntaxe

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;

Membres

AuthStatus

Membre de l’énumération HTTP_AUTH_STATUS qui indique la status d’authentification finale de la demande.

Si le status d’authentification n’est pas HttpAuthStatusSuccess, les applications doivent ignorer les membres de cette structure, à l’exception de AuthStatus, SecStatus et AuthType.

SecStatus

Valeur SECURITY_STATUS qui indique l’échec de sécurité status lorsque le membre AuthStatus est HttpAuthStatusFailure.

Flags

Indicateurs d’authentification qui indiquent les attributs d’authentification suivants :

Attribut Signification
HTTP_REQUEST_AUTH_FLAG_TOKEN_FOR_CACHED_CRED
Le jeton fourni est destiné à NTLM et est basé sur les informations d’identification mises en cache d’une connexion Keep Alive (KA).

AuthType

Un membre de l’énumération HTTP_REQUEST_AUTH_TYPE qui indique le schéma d’authentification tenté ou établi pour la demande.

AccessToken

Handle du jeton client que le processus de réception peut utiliser pour emprunter l’identité du client authentifié.

Le handle du jeton doit être fermé en appelant CloseHandle lorsqu’il n’est plus nécessaire. Ce jeton est valide uniquement pendant la durée de vie de la demande. Les applications peuvent régénérer le défi 401 initial pour se réauthentifier à l’expiration du jeton.

ContextAttributes

Attributs de contexte client pour le jeton d’accès.

PackedContextLength

Longueur, en octets, de PackedContext.

PackedContextType

Type de contexte dans le membre PackedContext .

PackedContext

Contexte de sécurité pour le type d’authentification.

Les applications peuvent interroger les attributs du contexte packé en appelant l’API QueryContextAttributes SSPI. Toutefois, les applications doivent acquérir un handle d’informations d’identification pour le package de sécurité pour l’AuthType indiqué.

L’application doit appeler l’API SSPI FreeContextBuffer pour libérer le contexte sérialisé lorsqu’il n’est plus nécessaire.

MutualAuthDataLength

Longueur, en octets, du membre pMutualAuthData .

pMutualAuthData

Données d’authentification mutuelle encodées en Base64 utilisées dans l’en-tête WWW-Authenticate.

PackageNameLength

pPackageName

Remarques

À compter de la version HTTP 2.0, la structure HTTP_REQUEST contient une structure HTTP_REQUEST_INFO . Le membre pVoid de la structure HTTP_REQUEST_INFO pointe vers le HTTP_REQUEST_AUTH_INFO lorsque le type d’informations de requête est HttpRequestInfoTypeAuth.

Lorsque l’application reçoit une demande avec cette structure et que la demande n’a pas été authentifiée, elle peut envoyer le défi 401 initial avec l’ensemble souhaité d’en-têtes WWW-Authenticate dans la structure HTTP_MULTIPLE_KNOWN_HEADERS . Lorsque l’API du serveur HTTP termine la négociation d’authentification, elle remplit la structure HTTP_REQUEST_AUTH_INFO et la transmet à nouveau à l’application avec la requête. Le handle du jeton d’accès qui représente l’identité du client est fourni dans cette structure par l’API serveur HTTP.

Attributs de contexte

Le membre ContextAttributes est fourni pour les schémas basés sur SSPI. Par exemple, les applications SSPI peuvent déterminer si ASC_RET_MUTUAL_AUTH est défini pour une session mutuellement authentifiée.

L’API du serveur HTTP ne fournit pas le délai d’expiration du contexte dans le membre PackedContext . Les applications peuvent nécessiter le délai d’expiration dans des circonstances spécifiques, par exemple lorsque la mise en cache des informations d’identification NTLM est activée et que l’application interroge l’heure d’expiration d’un contexte mis en cache. Si l’application serveur nécessite le délai d’expiration pour le contexte client sous-jacent associé au jeton d’accès, elle peut recevoir le contexte packé et appeler QueryContextAttributes avec le SECPKG_ATTR_LIFESPAN.

Données d’authentification mutuelle

Par défaut, l’API serveur HTTP garantit que les données d’authentification mutuelle sont ajoutées à la réponse 200 finale ; en général, les applications serveur ne sont pas responsables de l’envoi des données d’authentification mutuelle.

Toutefois, les applications peuvent recevoir les données d’authentification mutuelle et les envoyer avec la réponse finale. Lorsque le membre ReceiveMutualAuth de la structure HTTP_SERVER_AUTHENTICATION_INFO a la valeur true, les applications reçoivent les informations d’identification du serveur pour l’authentification mutuelle, ainsi que la demande authentifiée.

Les données d’authentification mutuelle fournies dans le membre pMutualAuthData contiennent la valeur exacte de WWW-Authenticate'en-tête sans le nom d’en-tête. Par exemple, pMutualAuthData pointe vers « Negotiate ade02938481eca ». L’application génère l’en-tête WWW-Authenticate en ajoutant le pMutualAuthData fourni en tant que valeur d’en-tête de réponse.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
En-tête http.h

Voir aussi

Structures de l’API serveur HTTP version 2.0

HTTP_REQUEST_INFO

HTTP_REQUEST_V2