ドメインなしのコンピューター (または他のドメイン) でホストされている asp.net c# Web サイトで、リモート Active Directory アカウントを偽装しようとしています。私はこれを機能させました:
IntPtr token = IntPtr.Zero;
LogonUser( "username", "ad.some.other.domain.com", "password", LOGON_TYPE_NEW_CREDENTIALS, LOGON32_PROVIDER_WINNT50, ref token))
{
WindowsImpersonationContext wic;
wic = WindowsIdentity.Impersonate(token);
//run code under the impersonated user.
//System.Environment.UserName returns windows user (not impersonated one)
//WindowsIdentity.GetCurrent() returns windows user (not impersonated one)
}
コードは実行されますが、偽装されたユーザーの「ユーザー名」を取得できません。これは、ログオン タイプとして LOGON_TYPE_NEW_CREDENTIALS を使用しているためです。これは、技術的には偽装されませんが、トークンを使用して偽装されたアカウントでネットワーク接続を実行します。これは問題なく機能しますが、理想的には私のサイトは偽装されたユーザーの下で実行されるため、ユーザー名やその他の機能を取得できます。基本的に、偽装ユーザーとしてネットワーク接続を実行するだけでなく、偽装ユーザーとしてサイトと対話したいと考えています。ログオンの種類として LOGON32_LOGON_INTERACTIVE を試しましたが、ドメインのないコンピューターで実行されているサイトでドメイン アカウントを認証できません。
完全に偽装し (ユーザー名を取得するなど)、ドメインのないコンピューターから Active Directory を使用して認証できるようにするためにできることはありますか?