2012-12-19 14 views
10

特定のフォルダ内のディレクトリとファイルを一覧表示しようとしています。このフォルダは、Windows認証(NTLM)によってログインし、Active Directory(homedirectoryプロパティ)から取得された現在のユーザー(Page.User)によって異なります。アクセスが拒否され、現在のユーザーがネットワークフォルダにアクセスしています

ADにアクセスしてフォルダの場所を取得するためにドメインユーザーを使用していますが、これは問題ありません。

偽装を行ってもSystem.IO.DirectoryInfo.GetDirectories()を使用してサブフォルダを取得すると失敗します。私が偽装されているユーザーがフォルダへのアクセス権を持っていることを確認している

System.Security.Principal.WindowsImpersonationContext impersonationContext; 
impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate(); 

は、ここで私は、偽装のために使用しているコードです。

これまでのところ、委任またはKerberos認証を設定する必要があるようですが、これは本当ですか?これらを達成する唯一の方法はありますか?偽装は十分ではありませんか?

+1

このStackoverflowの前の投稿を確認しましたか? http://stackoverflow.com/questions/2563724/accessing-password-protected-network-drives-in-windows-in-c/2563809#2563809 – MethodMan

答えて

2

偽装すると、Webサイトのサービスアカウントは、そのコンピュータの別のユーザーを偽装(偽装)することができます。したがって、あなた(または偽装されたユーザー)が持っている権利を確認するためにADを照会することができます。

他のコンピュータでUNC共有へのアクセスを要求すると、他のコンピュータに、偽装されているユーザーの代わりにWebサイトサービスアカウントが動作していることを受け入れるように要求されます。これは委任しています。他のマシンは、ユーザーの資格情報自体をチェックするのではなく、そのチェックをWebサーバーに委任しています。

クライアントが別のマシン(通常はWebサーバーの場合)からWebサイトに接続している場合、クライアントからWebサーバーへの「ダブルホップ」がUNCファイルサーバーにあります。

(SetSPNユーティリティを使用して)Kerberosを設定し、ウェブサイトサービスアカウント(ADユーザーとコンピュータを含む)の委任権限を有効にする必要があるとお考えです。これを設定する際に問題がある場合は、DeleConfigというツールを心からお勧めします。

関連する問題