2011-07-08 9 views
2

ログオンしているユーザーを偽装してからuncファイルにアクセスする際に問題が発生しました。私は、このサンプルコードを使用して試してみました:ログインしているユーザーを偽装して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、問題ではない、魅力のように動作します!

問題は、パスワードを提供する必要があり、私がチェックしたいユーザーがログオンしているため、提供できないということです。

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

+2

例外が伝播するのを防ぐために、キャッチしてログに記録しないようにしてください。クール! –

+0

あなたは現在のユーザーアカウントではなくASP.NETアカウントを偽装しています。あなたのautheticationモードは何ですか?また、web.configで偽装を指定していますか? – 2GDev

+0

@Davide:サンプルコードだと思う...ここをチェック:http://stackoverflow.com/questions/4334665/steps-to-enable-double-hop-delegation-in-iis7-windows-2008、そしてここにhttp://stackoverflow.com/questions/983443/windowsidentity-winid-windowsidentityhttpcontext-current-user-identity-how-tここにソースがあります。http://msdn.microsoft.com/en-us/library/ms998351 .aspx#paght000023_windowsidentityを使用してインパクトする – 2GDev

答えて

0

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

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

アカウントにリソース の権限がない場合、Webアプリケーションは リソースを使用できなくなります。ウェブ アプリケーションは、Web.configファイルにタグ を添加することによって偽装が 起動時に、Webアプリケーションのために使用 ように構成することができる

デフォルト異なる アイデンティティを想定ここ

偽装であります。偽装 も、 コードで動的に実装することができます。これにより、コードを有効にして、必要に応じて をオフにすることができます。 ASP.NET Identity and Impersonation Different Impersonation

から

だからweb.configファイルとIISの設定を確認し、正しいユーザーを偽装していることを確認してください。

関連する問題