そのドメインにクエリを実行する目的で、別のドメインのユーザーになりすまそうとしています。背景については、一方向の信頼からユーザー情報にアクセスするを参照してください。
ローカルドメインユーザーを使用している場合、偽装は正しく機能します。LDAPSポート636を介しているターゲットドメインを指定すると、機能しません。私のなりすましはnullを返します。
私のなりすましコード
public static WindowsImpersonationContext ImpersonateUser(ConnectionCredentials user)
{
WindowsIdentity tempWindowsIdentity;
IntPtr token = IntPtr.Zero;
IntPtr tokenDuplicate = IntPtr.Zero;
if (RevertToSelf())
{
if (LogonUser(user.UserName, user.Domain, user.Password, LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT, ref token) != 0)
{
if (DuplicateToken(token, 2, ref tokenDuplicate) != 0)
{
tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
impersonationContext = tempWindowsIdentity.Impersonate();
if (impersonationContext != null)
{
CloseHandle(token);
CloseHandle(tokenDuplicate);
return impersonationContext;
}
}
}
}
if (token != IntPtr.Zero)
CloseHandle(token);
if (tokenDuplicate != IntPtr.Zero)
CloseHandle(tokenDuplicate);
return impersonationContext;
}
何か案は?ありがとう。