私は現在、Windows認証を使用してログインするユーザーを含むASP.NETアプリケーションに取り組んでいます。これにより、HTTPContext.UserとThread.Principalの両方が、予想される動作が期待されるユーザーロギングと同じクレデンシャルで設定され、WindowsIdentityはIIS.NETAppPoolユーザーのままになります。
最近、アプリケーションログで、WindowsIdentityがIISユーザーとして開始され、最終的にログインしているユーザーに昇格される1つの要求(通常はページの読み込み時に5番目の要求)があるように見えることに気付きました。
これは、ユーザーがルートパス(たとえばhttp:// localhost /)にアクセスしているときにのみ発生しているように見えます。http://localhost/index.aspxなどの他の正確なパスを指定した場合、この要求は発生していないように見え、WindowsIdentityは変更されません。
(かなり大きな)コードベースを見ると、WindowsIdentityを偽装するメソッドは1つしか見つかりませんが、そのメソッドは、特定のページの特定の状況を除いて呼び出されません。
なぜこれが発生するのか、IISが単独で実行する理由があるのかどうか疑問に思いました。