0

IISに、ページを表示しているユーザーのActiveDirectoryユーザー名を取得してもらいたい。これは可能ですか?ASP.NET認証を介して実行できる可能性があると思いましたが、試してみると、「401 Unauthorized:Access isdenied duetoinvalidcredentials」というエラーメッセージが表示されました。基本的に、私がやりたいのは、Webページに現在のユーザー名を取得させ、この人が特定のセキュリティグループのメンバーであるかどうかを比較し、メンバーである場合はコンテンツを表示することです。これらはすべて、VS2010の組み込みテストサーバーを使用するローカルPCでうまく機能しますが、ADの詳細を取得するだけです。すべてが機能するようになったので、IIS7を実行しているテストサーバーに移動して、そこで機能させたいと思います。

default.aspxコードビハインド(ローカルマシンで機能)にある唯一のコードは次のとおりです。

string[] arr = System.Web.HttpContext.Current.Request.LogonUserIdentity.Name.Split('\\');

if (arr.Length > 0)
{
    lblDomain.Text = arr[0].ToString();
    lblUser.Text = arr[1].ToString();
}

私がここ(http://stackoverflow.com/questions/10584545/activedirectory-current-username-in-asp-net)で見つけたものから、私が望むことは可能であるように見えますが、それは私と関係があるのだろうかと思いますコードビハインド。また、Web.Configに何か特別なものが必要かどうかもわかりません。そこには次のものがありましたが、500エラーが発生しました。

<authentication mode="Windows"/>
<identity impersonate="true"/>

上記のStackOverflowの質問に対する回答を試しましたが、まだ500エラーが発生しています。ヒントをいただければ幸いです。

また、次のことを試しましたが、それでも500エラーが発生します。どこが間違っているのかわからない。

string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

と:

string userName = Environment.UserName;
4

3 に答える 3

2

IISで、Windows認証を有効にしてから、他のすべての形式の認証(匿名を含む)を無効にしてみてください。

于 2012-10-26T03:20:14.907 に答える
0

偽装がオンになっている場合、Environment.UserNameは必要なものに設定されます。

于 2012-10-26T01:40:43.813 に答える
0

使用できます

HttpContext.Current.User.Identity.Name

It will give you Domain\UserName
于 2012-10-26T03:14:48.727 に答える