共用方式為


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,應用程式應該忽略此結構的成員, 但 AuthStatusSecStatusAuthType 除外。

SecStatus

SECURITY_STATUS值,指出當 AuthStatus 成員為 HttpAuthStatusFailure 時的安全性失敗狀態。

Flags

指出下列驗證屬性的驗證旗標:

屬性 意義
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

驗證類型的安全性內容。

應用程式可以藉由呼叫 SSPI QueryContextAttributes API 來查詢封裝內容的屬性。 不過,應用程式必須取得所指定 AuthType 之安全性套件的認證句柄。

應用程式應該呼叫 SSPI FreeContextBuffer API,以在不再需要串行化內容時釋出串行化內容。

MutualAuthDataLength

pMutualAuthData 成員的長度,以位元組為單位。

pMutualAuthData

WWW-Authenticate 標頭中使用的Base64編碼相互驗證數據。

PackageNameLength

pPackageName

備註

從 HTTP 2.0 版開始, HTTP_REQUEST 結構包含 HTTP_REQUEST_INFO 結構。 當要求資訊類型為 HttpRequestInfoTypeAuth 時,HTTP_REQUEST_INFO 結構的 pVoid 成員會指向HTTP_REQUEST_AUTH_INFO

當應用程式收到具有這個結構的要求,且要求尚未通過驗證時,它可以傳送初始 401 挑戰,並在 HTTP_MULTIPLE_KNOWN_HEADERS 結構中傳送所需的一組 WWW-Authenticate 標頭。 當 HTTP 伺服器 API 完成驗證交握時,它會填滿 HTTP_REQUEST_AUTH_INFO 結構,並再次將它傳遞至應用程式並傳送要求。 HTTP 伺服器 API 會在此結構中提供代表用戶端身分識別的存取令牌句柄。

內容屬性

ContextAttributes 成員是針對以 SSPI 為基礎的配置所提供。 例如,SSPI 應用程式可以判斷是否已針對相互驗證的會話設定 ASC_RET_MUTUAL_AUTH

HTTP 伺服器 API 不會提供 PackedContext 成員中內容的到期時間。 應用程式在特定情況下可能需要到期時間,例如,啟用NTLM認證快取時,應用程式會查詢快取內容的到期時間。 如果伺服器應用程式需要與存取令牌相關聯的基礎用戶端內容到期時間,它可以接收封裝的內容,並使用 SECPKG_ATTR_LIFESPAN呼叫 QueryContextAttributes

相互驗證數據

根據預設,HTTP 伺服器 API 可確保相互驗證數據會新增至最終的 200 回應;一般而言,伺服器應用程式不負責傳送相互驗證數據。

不過,應用程式可以接收相互驗證數據,並以最終回應傳送。 當HTTP_SERVER_AUTHENTICATION_INFO結構的 ReceiveMutualAuth 成員設定為 true 時,應用程式會接收伺服器認證以進行相互驗證,以及已驗證的要求。

pMutualAuthData 成員中提供的相互驗證數據包含沒有標頭名稱的標頭 WWW-Authenticate 確切值。 例如, pMutualAuthData 指向 “Negotiate ade02938481eca”。 應用程式會將提供的 pMutualAuthData 附加為響應標頭值,以建置 WWW-Authenticate 標頭。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
標頭 http.h

另請參閱

HTTP 伺服器 API 2.0 版結構

HTTP_REQUEST_INFO

HTTP_REQUEST_V2