-
05-07-2019 - |
質問
次のように、UNC共有上のファイルにアクセスするために偽装を使用しています。
var ctx = ((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate();
string level = WindowsIdentity.GetCurrent().ImpersonationLevel);
IIS6を使用する2つのWindows 2003サーバーで、1つのサーバーで委任と他のサーバーで偽装の偽装レベルが異なります。
これにより、サーバーのUNC共有に「偽装」レベルでアクセスできないという問題が発生します。
この違いの原因は何ですか? machine.configおよびIIS設定でアプリプール、サイト、および仮想ディレクトリを検索しましたが、この問題の原因を見つけることができません。
解決
一方のコンピューターはActive Directoryによる委任に対して信頼されているようですが、もう一方は信頼されていないようです。アプリプールIDがネットワークサービスの場合、コンピューターアカウントが「委任に対して信頼されている」とマークされていることを確認します。 ADで。
AD管理者に複製を強制してから、ワークステーションにログアウト/ログインして、Kerberosチケットキャッシュを更新する必要がある場合があります。
他のヒント
localhostをウェブサーバーとして使用してテストし、その動作中にデプロイしたときにエラーが発生した場合、このブログ投稿
Impersonate()を行ったアプリケーションの1つで、アプリケーションプールの所有者のローカルセキュリティポリシーを変更し、そのアカウントを次のポリシー/グループに追加する必要があることがわかりました。
- オペレーティングシステム権限の一部として機能。
- 認証後にクライアントを偽装します。
サーバーで、[開始]>を実行しますすべてのプログラム>管理ツール>次に、ローカルセキュリティポリシーに移動して、ローカルセキュリティポリシー>ユーザー権利の割り当てを行い、上記の2つのポリシーを探します。