0

数年以上にわたり、この投稿で概説されているアプローチを使用して、Asp.Net アプリで混合モード認証を有効にしてきました: https://stackoverflow.com/a/7735008

上記の投稿で強調表示されているように、適切な要素を含む Login.aspx と WindowsLogin.aspx の 2 つのページがあります。故障した最近まですべてが正常に機能していましたが、故障した理由や時期を特定することはできません (数か月間、アプリの主要な新機能に取り組んでおり、いくつかのマネージド モジュールやその他のものを追加しました) 、しかし、一度に1つずつ削除しようとしましたが、役に立ちませんでした)。

これは、グローバル認証用に定義されています。

<system.web>
    <authentication mode="Forms">
        <forms cookieless="UseCookies" loginUrl="~/Login.aspx" slidingExpiration="true" timeout="10" />
    </authentication>
</system.web>

<system.webServer>
    <security>
        <authentication>
            <anonymousAuthentication enabled="true" />
            <basicAuthentication enabled="false" />
            <digestAuthentication enabled="false" />
            <windowsAuthentication enabled="false" />
        </authentication>
    </security>
</system.webServer>

次に、参照された投稿とまったく同じように適切な要素。ブラウザで WindowsLogin.aspx に直接アクセスすると、302 リダイレクトで、WindowsLogin.aspx に設定されたリターン URL で Login.aspx にリダイレクトされます。最低限の認証とその他の部分だけが残るまで、不要な構成をすべて排除することで、web.config を簡素化しようとしました。それでも WindowsLogin.aspx は Login.aspx にリダイレクトされます (つまり、WindowsLogin.aspx ページでフォーム認証が開始されます)。

興味深いことに、loginUrl を WindowsLogin.aspx に変更すると (他のすべてはまったく同じままです)、WindowsLogin.aspx は期待どおりにネイティブ ブラウザー認証チャレンジを表示します。

loginUrl を Login.aspx に設定してこれを機能させるために考えられるすべてのオプションを試してみましたが、うまくいきません。

302 リダイレクトの IIS トレース ルールを有効にして、WindowsLogin.aspx が Login.aspx にリダイレクトされているログ ファイルをキャプチャしました (loginUrl を Login.aspx に設定)。トレース ファイルは、http: //imbibe.in/public/fr000001.xmlから入手できます。

WindowsAuthenticationモジュールがそこで認証を行うはずのときに、FormsAuthenticationモジュールがWindowsLogin.aspxページでキックする理由を理解するのを手伝ってくれませんか。また、ログイン URL を切り替えるだけで、Windows 認証ページで 401 チャレンジが発生するのはなぜですか。Win Server 2008 で IIS 7.5 を使用しています。

更新: Default、Login、および WindowsLogin の 3 つのページのみを含む単純な Web アプリを作成し、同じサーバーで混合モード認証アプローチに従いましたが、機能しました。これは明らかに、干渉しているアプリケーション/アプリ プール内の何かを意味します。提供された IIS トレース ログがその問題を解決できることを願っています。アプリの web.config から完全に削除する<authentiction mode="Forms">と (つまり、認証が有効になっていないことを意味します)、ログイン ページと WindowsLogin ページは正常に機能します。ただし、現在の構成のみでは、WindowsLogin に移動すると、Login.aspx にリダイレクトされます。

4

1 に答える 1