1

フォーム認証、または独自のカスタム Basic または Digest 認証を使用する WebAPI アプリケーションがあります。ほとんどのサーバーで問題なく動作します。ただし、一部のサーバーでは機能しません。

認証が失敗した場合、IIS がアプリケーション プール ユーザーを認証したことが原因であることがわかりました。Thread.CurrentPrincipal.Identity.AuthenticationType = "ネゴシエート". 私の知る限り、これはWindows認証です。ただし、問題のサイトでは Windows 認証が無効になっており、サーバー上の Windows 認証機能をアンインストールするまで行っても、同じ問題が発生しました。

runAllManagedModulesForAllRequests を true に設定すると、この問題が解決されることがわかりましたが、静的ハンドラーを介して実行されるものであっても、すべての要求にオーバーヘッドが追加されるため、望ましい回避策ではありません。

なぜこれが起こっているのか、または IIS で認証プロセスをデバッグする方法を誰かが教えてくれれば、非常に役に立ちます。

編集:違いがある場合はIIS7/7.5統合パイプライン

4

1 に答える 1

1

同様の問題が発生している間、ここに私の観察と提案があります。

この問題は、匿名ユーザー IDuser accountとして使用される匿名に関連している可能性があります。デフォルト設定が問題である可能性があります。詳細はこちらをお読みください:

まとめ

IIS 7.0 UI を使用して、[認証]ページに移動し、[匿名認証]を選択します。次に、右クリックEditして、これに使用するユーザーを選択します。この (新しく選択された) ユーザーがすべての静的ファイルにアクセスできる場合、すべてが機能し始めます。選択するApp Pool Identityと、現在のプール ユーザー アカウントに指定されたアクセス権が付与されます。

デフォルト値は IUSR で、詳細は次のとおりです。

Windows Server 2008 R2 / IIS7.5 で IUSR アカウントが見つからない

于 2012-11-22T09:14:12.230 に答える