Msv1_0SubAuthenticationFilter函式 (subauth.h)
Msv1_0SubAuthenticationFilter函式會執行域控制器特定的使用者登入驗證。
函式會接收使用者登入數據,以及域控制器 安全性帳戶 管理員 (SAM) 資料庫中使用者找到的所有資訊。
此函式是由自定義子驗證套件 DLL 實作,可與 Kerberos 和MSV1_0驗證套件搭配使用。
語法
NTSTATUS Msv1_0SubAuthenticationFilter(
[in] NETLOGON_LOGON_INFO_CLASS LogonLevel,
[in] PVOID LogonInformation,
[in] ULONG Flags,
[in] PUSER_ALL_INFORMATION UserAll,
[out] PULONG WhichFields,
[out] PULONG UserFlags,
[out] PBOOLEAN Authoritative,
[out] PLARGE_INTEGER LogoffTime,
[out] PLARGE_INTEGER KickoffTime
);
參數
[in] LogonLevel
指定 LogonInformation 中提供的資訊層級。 此參數通常會設定為 NetlogonInteractiveInformation。
[in] LogonInformation
NETLOGON_LOGON_IDENTITY_INFO 結構的指標。 此結構的成員包含登入之使用者的相關信息。 LogonDomainName 成員會被忽略。
[in] Flags
選擇性。 包含描述登入情況的旗標。 此參數可以是下列其中一個值。
值 | 意義 |
---|---|
|
傳遞驗證。 使用者未連線到這部電腦。 |
|
這是使用來賓帳戶進行登入的重試。 |
[in] UserAll
USER_ALL_INFORMATION 結構的指標,其中包含從 SAM 資料庫傳回的使用者描述。
[out] WhichFields
傳回需要寫回 SAM 資料庫 之USER_ALL_INFORMATION 結構的成員。 只有在 Msv1_0SubAuthenticationFilter 傳回成功時,才會寫入這些成員。 只有下列值有效。
值 | 意義 |
---|---|
|
將 UserAll 結構之 Parameters 成員中包含的數據寫回 SAM 資料庫。
如果 Parameters 成員 UNICODE_STRING 緩衝區的大小已變更, Msv1_0SubAuthenticationFilter 必須使用 MIDL_user_free 函式刪除緩衝區,並使用 MIDL_user_allocate 函式重新配置緩衝區。 |
[out] UserFlags
要從該函式 ProfileBuffer 參數中的 LsaLogonUser 函式傳回的值。 此參數可以是下列其中一個值。
值 | 意義 |
---|---|
|
這是來賓登入。 |
|
呼叫端未指定加密認證。 |
[out] Authoritative
布爾值的指標,指出傳回的狀態是否為應該傳回給原始呼叫端的授權狀態。 如果傳回的值是 FALSE,則可以在另一個域控制器上再次嘗試登入要求。 不論函數調用的傳回值為何,此參數都應該傳回有效的資訊。 此參數不會與 Kerberos 驗證套件搭配使用。
[out] LogoffTime
值的指標,接收使用者應該註銷系統的時間。 這次用來控制登入存留期,並指定為 GMT 相對 Windows 系統時間。
[out] KickoffTime
值的指標,接收使用者應該註銷系統的時間。 這次用來控制登入存留期,並指定為 GMT 相對系統時間。 如果使用者不自動註銷,請指定大正值,如下所示:
KickoffTime->HighPart = 0x7FFFFFFF;
KickoffTime->LowPart = 0xFFFFFFFF;
傳回值
此函式必須傳回下列其中一個值。
傳回碼 | Description |
---|---|
|
沒有錯誤。 |
|
帳戶已停用。 |
|
帳戶已過期。 |
|
帳戶已經鎖定。 |
|
LogonLevel 無效。 |
|
使用者目前未獲授權登入。 |
|
使用者未獲授權登入指定的工作站。 |
|
指定的用戶沒有帳戶。 |
|
密碼已過期。 |
|
密碼必須在下次登入時變更。 |
|
密碼無效。 |
當 Msv1_0SubAuthenticationFilter 函式搭配 Kerberos 驗證套件使用時,如果函式呼叫傳回STATUS_SUCCESS,而且兩個參數 之一 LogoffTime 或 KickoffTime 有非零值,這個值會當做票證存留期使用。 另一方面,如果兩個參數的值都是非零值,則會使用這兩個值中的較小值。
如果用於票證存留期的值 (LogoffTime 和 KickoffTime) 的較快大於預設票證存留期,則該值將會當做票證的續約時間上限使用。 相反地,如果兩個值中的較大值 (LogoffTime 和 KickoffTime) 的較晚版本小於預設票證存留期,此值將會當做票證存留期使用。 如需詳細資訊,請參閱 Microsoft Kerberos。
與 Kerberos 驗證套件搭配使用時,如果此函式傳回錯誤, 密鑰發佈中心 (KDC) 將會傳回 Kerberos 錯誤KDC_ERR_POLICY,狀態值會傳回為擴充錯誤碼。
備註
此函式的實作不應執行導致 輕量型目錄存取通訊協定 (LDAP) 流量的任何作業。 例如,請勿連線到 Active Directory 資料庫並查詢。
在MSV1_0或 Kerberos 驗證套件驗證登入之後, Msv1_0SubAuthenticationFilter 函式可以執行額外的驗證,以判斷使用者是否可以登入網路帳戶。 如果子驗證套件 DLL 在域控制器的登錄中正確註冊為 『Auth0』,則會呼叫此函式。 登錄路徑會根據函式是否位於MSV1_0或 Kerberos 子驗證套件 DLL 而有所不同。
此篩選例程可能會傳回STATUS_SUCCESS,這表示登入應該繼續,或失敗碼,這表示其他驗證失敗。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | subauth.h |