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 |
---|---|
|
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 |