0
我有一個應用程序在C#中,我試圖通過冒充另一個用戶來更新AD。試圖冒充另一個用戶來更新Active Directory
我正在閱讀廣告,以便讓用戶更新非關鍵字段,例如任何AD帳戶的電話號碼。爲了做到這一點,我們創建了一個具有更新任何AD條目權限的新用戶。我通過登錄我的機器來驗證用戶的權限,並以他身份啓動程序,並且我可以更新任何用戶的輸入。
我使用的是Uwe Keim's Impersonator class,模擬似乎成功發生,即沒有例外。
但是,測試表明,我實際上仍然使用我自己的登錄用戶更新AD,儘管冒用了模仿。我可以更新自己的AD條目,但不是模擬用戶或其他AD條目。所以似乎沒有模仿發生?
我試圖通過使用錯誤的憑據來驗證Impersonator實際嘗試做任何事情,並收到相應的錯誤消息。所以用戶憑據是正確的,並且實際上是針對AD進行檢查的。
這裏是我的相關代碼,不相關的或敏感份塗黑[...]:
private void SaveToAD()
{
try
{
[...]
using (new Impersonator(@"<user>", @"<domain>", @"<password>"))
{
foreach ([...])
{
DirectoryEntry entry = [...];
entry.Properties[...].Value = [...];
entry.CommitChanges();
}
}
[...]
}
catch (UnauthorizedAccessException ex)
{
// Handling
}
catch (Win32Exception ex)
{
// Handling
}
finally
{
Cursor = Cursors.Arrow;
}
}
誰能告訴我什麼錯或點我的方向?
我沒有所有用戶的憑據,只有一個用戶有權限更新任何其他用戶的數據。 – Deathmic 2013-05-06 07:00:15
這應該是你所需要的。如果您擁有「上帝」帳戶的憑據,請在DirectoryEntry的構造函數中提供它們以建立對象的安全上下文。然後,您可以進行所有您想要的更改。我希望你有一個很好的機制來安全地存儲你的輔助\神帳戶的憑據。 – CaptDialup 2013-05-06 07:15:30
我通過SearchResult.GetDirectoryEntry()獲取我的DirectoryEntry項目,所以我不認爲我可以通過這種方式實例化它們。 – Deathmic 2013-05-06 13:17:50