ユーザーのWindows認証値、より正確には名前を知る必要があるWebページを開発しています。
他の開発ではこの種の認証が行われていますが、残念ながら私にとっては作成者が亡くなっており、連絡先やドキュメントがありません。
Visual Studio 2008 を使用しており、リモート サーバーにある Web サービスにアクセスしています。サーバーは Windows サーバー 2008 r2 標準で、ISS バージョン 7.5 を使用しています。
私は他の開発のソースコードを持っているので、私がしたことはコピーペーストであり、自分のマシン (localhost) にある Web サービスを呼び出していたときに正常に動作していました。コードは次のとおりです。
//1st way
WindowsPrincipal wp = new WindowsPrincipal(WindowsIdentity.GetCurrent());
string strUser = wp.Identity.Name;//ALWAYS GET NT AUTHORITY\NETWORK SERVICE
//2nd way
WindowsIdentity winId = WindowsIdentity.GetCurrent();
WindowsPrincipal winPrincipal = new WindowsPrincipal(winId);
string user = winPrincipal.Identity.Name;//ALWAYS GET NT AUTHORITY\NETWORK SERVICE
//3rd way
IIdentity WinId = HttpContext.Current.User.Identity;
WindowsIdentity wi = (WindowsIdentity)WinId;
string userstr = wi.Name; //ALWAYS GET string empty
btn_select.Text = userstr;
btn_cancelar.Text = strUser;
btn_gravar.Text = user;
ご覧のとおり、同じものを取得する方法が 3 つあります。悲しいことに、ユーザーの名前を表示します。私のweb.configに関しては、私は持っています:
<authentication mode="Windows"/>
<identity impersonate="true" />
IISマネージャーで、匿名認証、ASP.NET偽装、基本認証、フォーム認証、およびWindows認証の間で有効と無効の組み合わせをたくさん試しました。
誰か助けてください??
注:各試行から取得したそれぞれの値はコードにあります