2

ログオンしているユーザーになりすまして、uncファイルにアクセスするのに問題があります。私はこのサンプルコードを使ってみました:

using System.Security.Principal;
...
// Obtain the authenticated user's Identity
WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity;
WindowsImpersonationContext ctx = null;
try
{  
    // Start impersonating  
    ctx = winId.Impersonate();  
    // Now impersonating  
    // Access resources using the identity of the authenticated user
}
// Prevent exceptions from propagating
catch{}
finally
{  
    // Revert impersonation  
    if (ctx != null)    
        ctx.Undo();
}
// Back to running under the default ASP.NET process identity

コメントに「認証されたユーザーのIDを使用してリソースにアクセスする」と書かれているファイルにローカルでアクセスしようとすると、正しく機能します。ただし、\\ ServerName \ Share \ FileName.txtなどのUNCを使用して、ファイルサーバー上のファイルで同じことを行おうとすると、偽装されたアカウントに十分な権限があるかどうかは関係ありません。アプリケーションは、ASP.NETアカウントに十分な権限がないという例外をスローします。

また、管理されていないコードを使用して偽装を実行しようとしましたが、機能します。ローカルファイルまたはUNCは、問題ではなく、魅力のように機能します。

問題は、パスワードを入力する必要があることです。これはログオンしているユーザーの権利であるため、確認したいので、パスワードを入力できません。

アプリケーションがこのように動作する理由を誰かが知っていますか?設定する必要のある構成設定ですか?

4

1 に答える 1

0

Web アプリケーションは特定の ID で実行されます。この ID は、ローカル マシンまたはドメインのユーザー アカウントに基づいています。

アプリケーションは、ディスクまたはサービス上のリソースにアクセスするときに、この ID を使用します。

アカウントがリソースに対する権限を持っていない場合、Web アプリケーションはリソースを使用できません。

偽装は、Web アプリケーションがデフォルトとは異なる ID を想定する場所です。

web.config ファイルにタグを追加することで、起動時に Web アプリケーションに偽装を使用するように構成できます。偽装はコードに動的に実装することもできるため、必要に応じてオンとオフを切り替えることができます。

ASP.NET ID と偽装から 別のなりすまし

そのため、web.config と IIS 構成を確認し、正しいユーザーになりすましていることを確認してください。

于 2011-07-08T13:10:29.470 に答える