5

これは、現在ログインしている Windows ユーザーを偽装できないという以前の投稿の続きです。いい案が多かったのですが、前スレがぐちゃぐちゃになってきたので、今回の投稿をもってリセットします。以下に記載されている現在の状態で、問題が何であるかが明らかになることを願っています。これは使い古されたパスなので、欠けているのは小さな構成ステップだけだと信じなければなりません。

問題: 現在ログインしているユーザーを ASP.NET に偽装させる必要があります。IIS 7.5 で実行すると、動作しません。IIS Express は正常に動作しますが、これはデバッグ セッションが私のユーザー ID で実行されているためだと思います。

Environment.Usernameこのユーザーが誰であるかを判断するために使用しています。このプロパティは常にログインしているユーザー名を返すという提案がありましたが、私のテストでは、IIS から偽装されたユーザーを返します。

たとえば、私の web.config が…</p>

    <identity impersonate="true" />

その設定で IIS 7.5 で実行すると、IUSREnvironment.Usernameが返されます。これは IIS 匿名ユーザー アカウントだと思います。

web.config を次のように変更すると…</p>

    <identity impersonate="true" userName="domain\jlivermore" password="mypassword" />

…その後、Environment.Username は jlivemore を返します。ただし、web.configで明示的に設定せずにjlivermoreを返す必要があります。

これが私のIIS設定です...</p>

.NET 承認規則 .NET 承認規則

認証 認証

1 つ質問があります。匿名認証を無効にすると、サイトにログインするように求められます。ドメインの Active Directory アカウントでログインしている場合、このチャレンジは表示されないと思いましたか? このプロンプトにユーザー名/パスワードを入力しても、なりすましが機能しません。

ここに画像の説明を入力

基本設定

基本設定

4

3 に答える 3

3

あなたが答えを見つけたかどうかはわかりませんが、誰かがそれに問題を抱えている場合は、web.configファイルに次のものが必要になります

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

また、IISでは、Asp.netの偽装を有効にし、Windows認証を有効にする必要があります。その他は無効にする必要があります。また、Windows認証で、[詳細設定]に移動し、[カーネルモード認証を有効にする]のチェックを外します。それはそれをする必要があります。これで、サイトがローカルイントラネットアプリ用に設定され、次のいずれかを使用できるようになります。

System.Security.Principal.WindowsIdentity.GetCurrent().Username()
HttpContext.Current.User.Identity.Name
System.Threading.Thread.CurrentPrincipal.Identity.Name

ただし、Environment.Usernameを使用すると、サーバー名のみが返されます。これが、これに苦労している人に役立つことを願っています。

于 2011-08-04T21:33:20.473 に答える
0

使ってみましたか

HttpContext.Current.User.Identity.Name ?
于 2011-05-20T08:35:21.900 に答える