2

以下のように、UNC共有上のファイルにアクセスするために偽装を使用しています。

  var ctx = ((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate();
  string level = WindowsIdentity.GetCurrent().ImpersonationLevel);

IIS6 を使用する 2 台の Windows 2003 サーバーで、偽装レベルが異なります。1 つのサーバーでは委任、もう 1 つのサーバーでは偽装です。

これにより、「偽装」レベルでサーバー上の UNC 共有にアクセスできないという問題が発生します。

この違いの原因は何ですか?アプリケーション プール、サイト、および仮想ディレクトリの machine.config および IIS 設定を検索しましたが、この問題の原因を見つけることができません。

4

3 に答える 3

7

コンピュータの1つはActiveDirectoryによる委任について信頼されているようですが、もう1つは信頼されていません。アプリプールIDがネットワークサービスの場合は、ADでコンピューターアカウントが[委任に対して信頼済み]とマークされていることを確認してください。

AD管理者にレプリケーションを強制してから、ワークステーションにログアウト/ログインしてKerberosチケットキャッシュを更新するように依頼する必要がある場合があります。

于 2010-04-28T03:40:02.080 に答える
2

localhost を Web サーバーとしてテストし、それが機能しているが、デプロイ時にエラーが発生する場合は、ダブルホップの問題が発生している可能性があります....このブログ投稿で概説されています

于 2009-04-29T05:24:37.760 に答える
1

Impersonate()を実行したアプリケーションの1つで、アプリケーションプール所有者のローカルセキュリティポリシーを変更し、そのアカウントを次のポリシー/グループに追加する必要があることがわかりました。

  1. オペレーティングシステムの特権の一部として機能します。
  2. 認証後にクライアントになりすます。

サーバーで、[スタート]>[すべてのプログラム]>[管理ツール]>[ローカルセキュリティポリシー]を実行し、[ローカルセキュリティポリシー]> [ユーザー権利の割り当て]に移動して、上記の2つのポリシーを探します。

于 2011-03-25T16:33:06.490 に答える