我打電話LogonUser嘗試驗證的一組憑據返回true:的LogonUser爲禁用的帳戶
LogonUser("forest", "avatopia.com" "stapler",
LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_WINNT50, out token);
,並返回真,即使該帳戶已禁用:
我也嘗試過使用SSPI directly to validate credentials,這 需要調用:
AcquireCredentialsHandle(..., "Negotiate", SECPKG_CRED_OUTBOUND, ..., ["forest", "stapler", "avatopia.com"], ...)
InitializeSecurityContext(...)
AcquireCredentialsHandle(..., "Negotiate", SECPKG_CRED_INBOUND, ...)
AcceptSecurityContext(...)
InitializeSecurityContext(...)
AcceptSecurityContext(...)
在大多數機器上,如果用戶帳戶被禁用,初始呼叫
AcquireCredentialsHandle
將失敗 。但在這個特定的機器上,我 測試它完成整個週期和工作。
如果我無效密碼嘗試然後LogonUser
沒有(正確)失敗:
LogonUser("forest", "avatopia.com" "adf342sdf3",
LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_WINNT50, out token);
回報假,並GetLastError
回報1326
(登錄失敗:未知的用戶名或密碼)
試圖SSPI使用無效密碼也(正確)失敗:
AcquireCredentialsHandle(..., "Negotiate", SECPKG_CRED_OUTBOUND, ..., ["forest", "adf342sdf3", "avatopia.com"], ...)
InitializeSecurityContext(...)
AcquireCredentialsHandle(..., "Negotiate", SECPKG_CRED_INBOUND, ...)
AcceptSecurityContext(...)
失敗與8009030C
(登錄嘗試失敗)
什麼是aggrevating是,這種行爲只發生在一臺機器。
爲什麼LogonUser
以及整個安全支持提供程序接口指示特定加入域的計算機上禁用帳戶的密碼:有效?
- 加入域的計算機,其中
LogonUser
(錯誤地)成功:Windows XP SP2的 - 加入域的計算機,其中
LogonUser
(正確)將失敗:Windows XP SP2的
更新:
沒有本地用戶調用Forest
:
也沒有任何本地用戶名爲Forest
:
這是無關緊要的,因爲我要求avatopia.com\Forest
,而不是speeder\Forest
。
oi vay僅僅因爲禁用用戶被允許訪問他們本不應該訪問的東西,人們就把他們的內褲放在一堆。
也許有一個同名的本地用戶在域用戶處於活動狀態時被禁用?對我來說,看起來你正在查看本地管理管理單元中的用戶。這是否也顯示禁用的域用戶? – 2012-03-19 14:09:44
@ThorstenDittmar我檢查了;我會添加屏幕截圖到問題。 – 2012-03-19 14:11:54
也許是一個愚蠢的問題,但是當這種情況發生時,你可以從那臺機器到達域控制器嗎?可能正在使用緩存的憑據。 – Luke 2012-03-20 14:25:49