別のユーザーになりすまして AD を更新しようとしている C# のアプリケーションがあります。
ユーザーがADアカウントの電話番号などの重要でないフィールドを更新できるようにするために、ADを読んでいます。そのために、任意の AD エントリを更新する権限を持つ新しいユーザーを作成しました。自分のマシンに彼としてログインし、彼としてプログラムを起動して、ユーザーの権限を確認したところ、どのユーザーのエントリも更新できました。
私はUwe Keim の Impersonator クラスを使用していますが、偽装は正常に行われているようです。つまり、例外はありません。
ただし、テストでは、なりすましにもかかわらず、実際にはまだ自分のログイン ユーザーを使用して 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;
}
}
何がうまくいかないのか、または方向性を教えてもらえますか?