1

ASP.NET 開発サーバーでテストしている ASP.NET アプリケーションがあります。このアプリケーションは、イントラネットの共有ポイント サイトからファイルをダウンロードするためのものです。私はWebClient.DownloadFile()この目的のために使用しています。しかし、次の例外が発生しています-

「リモート サーバーがエラーを返しました: (401) 権限がありません。」

アプリケーションの実行中に Windows にログインしているアカウントは、ダウンロードしたいリソースにアクセスできます。

IIS 7.5ファイルをダウンロードするために必要な ID をアプリケーション プールに与えて、アプリケーションを同様に実行しようとしました。しかし、それでも同じエラーが発生しました。

正確に何が問題で、それを克服する方法はありますか? 前もって感謝します!

4

4 に答える 4

2

これは、ダブル ホップ デリゲーションの問題です。これを見てください: http://weblogs.asp.net/owscott/archive/2008/08/22/iis-windows-authentication-and-the-double-hop-issue.aspx

于 2012-08-22T06:51:39.750 に答える
1

SharePoint サイトでの通常の Windows (NTLM) 認証を前提としています。

「ワンホップNTLM地獄」と呼ばれることもある「ダブルホップ委任」の設計動作でヒットしている可能性が最も高い-クライアント(ブラウザー)からサーバー(ASP.Netアプリケーション)に渡される資格情報は、ボックスの外では使用できません。その結果、ASP.Net アプリケーションは多かれ少なかれ匿名ユーザーとして自動化され、SharePoint サイトで認証できなくなります。

それを解決する一般的な方法 - ある種の信頼できるアカウントを持ち、そのアカウントでサイトのコードを実行します。サイトにアクセスするときよりも、プロセスのアカウントでコードを実行します (ユーザーになりすましません)。バグがあると、誰でもあなたのサイトを使用してその特別なアカウントで SharePoint やその他のリソースにアクセスできるようになるため、適切なセキュリティ対策を講じるためにコードを確認する必要があります。

于 2012-08-22T06:56:22.903 に答える
1

WebClient のUseDefaultCredentialsプロパティを true に設定することで問題が解決しました

于 2012-08-22T10:16:02.680 に答える
0

Kirill が述べたように、これは Kerberos の問題です。SPN などの設定を開始する前に、まずこのリンクのアドバイスに従ってください。

私は最近、ロックダウンされたドメインで Kerberos を機能させようとしてイライラする 1 週間を過ごしましたが、最後には useAppPoolCredentials を true に設定するだけで済みました。

それでも問題が解決しない場合、このリンクは私にとっても非常に役立ちます。

幸運を!

于 2012-08-22T06:57:03.773 に答える