LsaCallAuthenticationPackage 函式 (ntsecapi.h)

登入應用程式會使用 LsaCallAuthenticationPackage 函式來與驗證套件通訊。

此函式通常用於存取驗證套件所提供的服務。

語法

NTSTATUS LsaCallAuthenticationPackage(
  [in]  HANDLE    LsaHandle,
  [in]  ULONG     AuthenticationPackage,
  [in]  PVOID     ProtocolSubmitBuffer,
  [in]  ULONG     SubmitBufferLength,
  [out] PVOID     *ProtocolReturnBuffer,
  [out] PULONG    ReturnBufferLength,
  [out] PNTSTATUS ProtocolStatus
);

參數

[in] LsaHandle

從先前呼叫 LsaRegisterLogonProcessLsaConnectUntrusted 取得的句柄。

[in] AuthenticationPackage

提供驗證套件的識別碼。 這個值是藉由呼叫 LsaLookupAuthenticationPackage 來取得。

[in] ProtocolSubmitBuffer

傳遞至驗證套件的驗證套件特定訊息緩衝區。

如需有關此緩衝區格式和內容的資訊,請參閱個別驗證套件的檔。

[in] SubmitBufferLength

指出 ProtocolSubmitBuffer 緩衝區的長度,以位元組為單位。

[out] ProtocolReturnBuffer

指標,接收驗證封裝所傳回之緩衝區的位址。

如需有關此緩衝區格式和內容的資訊,請參閱個別驗證套件的檔。

此緩衝區是由此函式所配置。 當您完成使用此緩衝區時,請呼叫 LsaFreeReturnBuffer 函式來釋放記憶體。

[out] ReturnBufferLength

ULONG 的指標,以位元組為單位接收傳回緩衝區的長度。

[out] ProtocolStatus

如果函式成功,此參數會收到 NTSTATUS 程式代碼,指出驗證套件的完成狀態。

傳回值

如果函式成功,傳回值會STATUS_SUCCESS。 檢查 ProtocolStatus 參數,以取得驗證套件所傳回的狀態。

如果函式失敗,傳回值為 NTSTATUS 程式碼。 以下是可能的錯誤碼。

傳回碼 Description
STATUS_QUOTA_EXCEEDED
無法完成呼叫,因為用戶端的記憶體配額不足以配置傳回緩衝區。
STATUS_NO_SUCH_PACKAGE
LSA 無法辨識指定的驗證套件。
STATUS_PKINIT_FAILURE
Kerberos 用戶端收到無效的 KDC 憑證。 對於裝置登入,需要嚴格的 KDC 驗證,因此 KDC 必須具有使用 “Kerberos 驗證” 範本或對等憑證的憑證。 此外,KDC 憑證可能已過期、撤銷,或用戶端正遭受主動攻擊,以將要求傳送至錯誤的伺服器。
STATUS_PKINIT_CLIENT_FAILURE
Kerberos 用戶端使用無效的系統憑證。 針對裝置登入,必須有 DNS 名稱。 此外,系統憑證可能已過期或選取錯誤憑證。
 

如需詳細資訊,請參閱 LSA 原則函式傳回值

LsaNtStatusToWinError 函式會將NTSTATUS程式碼轉換成 Windows 錯誤碼。

備註

登入應用程式可以呼叫 LsaCallAuthenticationPackage 來與驗證套件通訊。 應用程式可能會執行此動作的原因有數個:

  • 實作多個訊息驗證通訊協定,例如NTLM Challenge-Response 通訊協定。
  • 若要將狀態變更資訊傳遞至驗證套件。 例如,NTLM 可能會通知MSV1_0套件,先前無法連線的域控制器現在可連線。 然後,驗證套件會重新登入該域控制器的任何使用者。
一般而言,此函式是用來與自定義驗證套件交換資訊。 應用程式不需要此函式,該應用程式會使用隨附於 Windows 的其中一個驗證套件,例如 MSV1_0 或 Kerberos。

您必須呼叫 LsaCallAuthenticationPackage ,才能清除LOCAL_SYSTEM和NETWORK_SERVICE的 PKINIT 裝置認證。 沒有 PKINIT 裝置認證時,成功的呼叫不會執行任何作業。 當有 PKINIT 裝置認證時,成功的呼叫會清除 PKINIT 裝置認證,以便只保留密碼認證。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 ntsecapi.h
程式庫 Secur32.lib
Dll Secur32.dll

另請參閱

LsaFreeReturnBuffer

LsaLookupAuthenticationPackage

LsaNtStatusToWinError