【发布时间】:2013-04-29 20:57:35
【问题描述】:
我有一个 C# 应用程序,我试图通过模拟另一个用户来更新 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;
}
}
谁能告诉我出了什么问题或指点我一个方向?
【问题讨论】:
标签: c# .net active-directory impersonation