HTTP_REQUEST_AUTH_INFO-Struktur (http.h)

Die HTTP_REQUEST_AUTH_INFO-Struktur enthält die Authentifizierung status der Anforderung mit einem Handle für das Clienttoken, das der empfangende Prozess zum Annehmen der Identität des authentifizierten Clients verwenden kann.

Diese Struktur ist in der HTTP_REQUEST_INFO-Struktur enthalten.

Syntax

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;

Member

AuthStatus

Ein Member der HTTP_AUTH_STATUS-Enumeration, der den endgültigen Authentifizierungs-status der Anforderung angibt.

Wenn die Authentifizierung status nicht HttpAuthStatusSuccess ist, sollten Anwendungen Member dieser Struktur außer AuthStatus, SecStatus und AuthType ignorieren.

SecStatus

Ein SECURITY_STATUS Wert, der den Sicherheitsfehler status angibt, wenn das AuthStatus-ElementHttpAuthStatusFailure ist.

Flags

Die Authentifizierungsflags, die die folgenden Authentifizierungsattribute angeben:

attribute Bedeutung
HTTP_REQUEST_AUTH_FLAG_TOKEN_FOR_CACHED_CRED
Das bereitgestellte Token ist für NTLM und basiert auf zwischengespeicherten Anmeldeinformationen einer Keep Alive-Verbindung (KA).

AuthType

Ein Member der HTTP_REQUEST_AUTH_TYPE-Enumeration , der das Authentifizierungsschema angibt, das für die Anforderung versucht oder eingerichtet wurde.

AccessToken

Ein Handle für das Clienttoken, das der empfangende Prozess zum Annehmen der Identität des authentifizierten Clients verwenden kann.

Das Handle für das Token sollte geschlossen werden, indem CloseHandle aufgerufen wird, wenn es nicht mehr benötigt wird. Dieses Token ist nur für die Lebensdauer der Anforderung gültig. Anwendungen können die anfängliche 401-Challenge erneut generieren, um sich erneut zu authentifizieren, wenn das Token abläuft.

ContextAttributes

Die Clientkontextattribute für das Zugriffstoken.

PackedContextLength

Die Länge von PackedContext in Bytes.

PackedContextType

Der Typ des Kontexts im PackedContext-Element .

PackedContext

Der Sicherheitskontext für den Authentifizierungstyp.

Anwendungen können die Attribute des gepackten Kontexts abfragen, indem sie die SSPI QueryContextAttributes-API aufrufen. Anwendungen müssen jedoch ein Anmeldeinformationshandle für das Sicherheitspaket für den angegebenen AuthType abrufen.

Die Anwendung sollte die SSPI FreeContextBuffer-API aufrufen, um den serialisierten Kontext frei zu geben, wenn er nicht mehr benötigt wird.

MutualAuthDataLength

Die Länge des pMutualAuthData-Elements in Bytes.

pMutualAuthData

Die base64-codierten daten zur gegenseitigen Authentifizierung, die im WWW-Authenticate-Header verwendet werden.

PackageNameLength

pPackageName

Hinweise

Ab HTTP-Version 2.0 enthält die HTTP_REQUEST-Struktur eine HTTP_REQUEST_INFO-Struktur . Das pVoid-Element der HTTP_REQUEST_INFO-Struktur zeigt auf die HTTP_REQUEST_AUTH_INFO , wenn der Anforderungsinformationstyp HttpRequestInfoTypeAuth lautet.

Wenn die Anwendung eine Anforderung mit dieser Struktur empfängt und die Anforderung nicht authentifiziert wurde, kann sie die anfängliche 401-Challenge mit dem gewünschten Satz von WWW-Authenticate Headern in der HTTP_MULTIPLE_KNOWN_HEADERS-Struktur senden. Wenn die HTTP-Server-API den Authentifizierungshandshake abgeschlossen hat, füllt sie die HTTP_REQUEST_AUTH_INFO-Struktur aus und übergibt sie erneut mit der Anforderung an die Anwendung. Das Handle für das Zugriffstoken, das die Clientidentität darstellt, wird in dieser Struktur von der HTTP-Server-API bereitgestellt.

Kontextattribute

Das ContextAttributes-Element wird für SSPI-basierte Schemas bereitgestellt. SSPI-Anwendungen können beispielsweise bestimmen, ob ASC_RET_MUTUAL_AUTH für eine sich gegenseitig authentifizierte Sitzung festgelegt ist.

Die HTTP-Server-API gibt nicht die Ablaufzeit für den Kontext im PackedContext-Member an. Anwendungen benötigen unter bestimmten Umständen möglicherweise die Ablaufzeit, z. B. wenn ntlm-Anmeldeinformationszwischenspeicherung aktiviert ist und die Anwendung die Ablaufzeit für einen zwischengespeicherten Kontext abfragt. Wenn die Serveranwendung die Ablaufzeit für den dem Zugriffstoken zugeordneten zugrunde liegenden Clientkontext benötigt, kann sie den gepackten Kontext empfangen und QueryContextAttributes mit dem SECPKG_ATTR_LIFESPAN aufrufen.

Daten zur gegenseitigen Authentifizierung

Standardmäßig stellt die HTTP-Server-API sicher, dass die Daten zur gegenseitigen Authentifizierung der letzten 200-Antwort hinzugefügt werden. Im Allgemeinen sind Serveranwendungen nicht für das Senden der gegenseitigen Authentifizierungsdaten verantwortlich.

Anwendungen können jedoch die gegenseitigen Authentifizierungsdaten empfangen und mit der endgültigen Antwort senden. Wenn das ReceiveMutualAuth-Element der HTTP_SERVER_AUTHENTICATION_INFO-Struktur auf true festgelegt ist, erhalten Anwendungen die Serveranmeldeinformationen für die gegenseitige Authentifizierung zusammen mit der authentifizierten Anforderung.

Die im pMutualAuthData-Member bereitgestellten gegenseitigen Authentifizierungsdaten enthalten den genauen Wert WWW-Authenticate Headers ohne den Headernamen. Beispielsweise verweist pMutualAuthData auf "Negotiate ade02938481eca". Die Anwendung erstellt den WWW-Authenticate-Header, indem der bereitgestellte pMutualAuthData-Wert als Antwortheaderwert angefügt wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Kopfzeile http.h

Weitere Informationen

Strukturen der HTTP-Server-API, Version 2.0

HTTP_REQUEST_INFO

HTTP_REQUEST_V2