これが可能か、または可能な回避策を知りたいです。サイトを IIS で実行したい - サイトを実行するアプリ プールは、AD を検索できるサービス アカウントになります。
現在のアプリケーション プール アカウントを取得し、プリンシパル コンテキストを設定するには、以下を使用します。
string appPoolAccount = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
// Define Context
PrincipalContext context = new PrincipalContext(ContextType.Domain);
これで、ユーザーは自分のマシンからサイトを実行します。ブラウザーを起動すると、プロセスを起動するユーザー名は、例として「test123」になります。これは、ログインしているユーザーと同じです。
私が取得する必要があるのは、彼らがブラウザを実行しているユーザー ID です。そのため、以下のようなことができます (2 番目のパラメーターは、私が見つけたプロセスを実行しているユーザーの文字列になります)。
UserPrincipal user = UserPrincipal.FindByIdentity(context , 'test123');
これまでのところ、次からそのユーザー文字列を取得しようとしました:
string test = Environment.UserName; //Took the App Pool Account
WindowsIdentity wi = WindowsIdentity.GetCurrent(); // Took App Pool account
string test = HttpContext.Current.User.Identity.Name; //bombed out as null