4

最近、ASP.NETで会社用に作成しているイントラネットWebサイト/アプリケーションでダイジェスト認証を有効にしました。

私がそうした理由は、Windows認証が一部のユーザーに対してのみ機能し、他のユーザーに対しては機能しないように思われたためです。理由がわからず、IISについて十分に理解していないため、問題を追跡できませんでした。試行錯誤の末、ダイジェスト認証によって私が望む動作が得られるように思われることがわかりました。つまり、ドメインに有効なアカウントを持つユーザーのみが、自分の資格情報を使用してWebサイトにログインできるようにします。

現在の問題は、Firefox(3+)が、サーバーに送信されるすべてのHTTP要求でユーザーに認証を要求しているように見えることです。これは、Internet Explorer(6以降)またはChromeでは発生しないようです。

私は解決策を探してみましたが、いつも行き止まりになっています。私はこの問題についての議論を見つけます、そして投稿されたすべての解決策はデッドリンクにつながります...またはそれはExperts Exchangeにあり、私は解決策を表示するためのアクセス権を持っていません。

この問題は、(私が読んだことから)さまざまなブラウザーが認証ヘッダーを送信する方法とIISがそれらを解釈する方法に関連しているようです。これを変更するために何ができるかわかりませんが?私が見つけた解決策の1つは、これを修正するためのISAPIフィルターの作成について言及していましたが、もちろん、完成したフィルターへのリンクが壊れており、自分でフィルターを作成する方法がわかりません。

about:configでNTLMやその他の認証関連の文字列をいじって、Firefoxにサーバーを信頼させようとしましたが、それも機能しないようです。

私が読んだ他のいくつかの情報源から、Windows認証に戻すとすべてが機能するはずですが、認証が一部のユーザーに対してのみ機能し、他のユーザーに対しては機能しないという正方形の1つに戻りました。

どちらの問題の解決策も私には有効ですが、Windows認証の問題に関する情報はほとんどありません。誰かが問題を追跡するために私を案内してくれるなら、私も喜んでそれについてのより多くの情報を投稿したいと思います。


同じ問題のように思われることを議論している私が見つけたURLはここにあります。(申し訳ありませんが、すべてのリンクを作成できませんでした。それ以外の場合は投稿できませんでした)

  • support.mozilla.com/tiki-view_forum_thread.php?locale=pt-BR&forumId=1&comments_parentId=346851
  • www.experts-exchange.com/Software/Internet_Email/Web_Browsers/Mozilla/Q_24427378.html
  • channel9.msdn.com/forums/TechOff/168006-Twin-bugs-in-IIS-IE-unfair-competitive-advantage-EDIT-SOLVED /
  • www.derkeiler.com/Newsgroups/microsoft.public.inetserver.iis.security/2006-03/msg00141.html
4

1 に答える 1

9

これは FF の既知のバグです。高度なダイジェスト認証は Internet Explorer から機能しますが、fire fox からの各 GET 要求で複数の認証プロンプトを受け取ります。

IE 6 にも同じバグがありました。潜在的な回避策は、IIS6 で「古い」ダイジェストを再度有効にすることです。

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/1d6e22ac-0215-4d12-81e9-c9262c91b797.mspx?mfr=true

現在、サーバーが不透明なディレクティブを送信すると、IE クライアントは RFC で指定されているとおりにこのディレクティブの値を返します。残念ながら、ノンス カウントがインクリメントされる (カウント 2 以降) クライアントからの後続の要求では、不透明なディレクティブ値は送信されません。これにより、サーバーでの認証が失敗し、401 Unauthorized が返されます。IE クライアントは、新しいチャレンジのユーザー名とパスワードを要求し、ファイルが取得されます。

これには追加の往復が必要であり、ユーザーは毎回資格情報の入力を求められます。

RFC では、クライアントからのリクエストで常に opaque を送信する必要があると規定されています。IE6 が使用しているダイジェストの実装は、RFC に準拠していません ( http://www.ietf.org/rfc/rfc2617.txt )。
3.2.2 認可リクエストヘッダー 不透明およびアルゴリズムフィールドの値は、リクエストされているエンティティの WWW-Authenticate レスポンスヘッダーで提供される値でなければなりません。

3.3 ダイジェスト操作 クライアントは、認証セッションに関連付けられたユーザー名、パスワード、ナンス、ナンス カウント、および不透明な値を記憶して、その保護スペース内で今後のリクエストで Authorization ヘッダーを構築するために使用する必要があります。

クライアントは、セッション中にサーバーから与えられた不透明なディレクティブの値を返す必要があるため、不透明なデータを使用して認証セッション状態情報を転送できます。--------編集追記-----

Windows 認証は、一部のユーザーに対してのみ機能し、他のユーザーに対しては機能しないようです。どのように失敗しましたか?偽装を有効にしましたか?

于 2011-03-04T17:34:06.287 に答える