2016-10-06 9 views
1

NTLM(Windows)認証を使用している場合、ユーザーが既にログオンしているかどうかをサーバーが判断する方法が不思議です。だから、ときに私は初めてアクセスサイト - サーバは、彼がNTLM経由で私を認証したい私に語った:HTTPによるNTLM認証

WWW-Authenticate: Negotiate 
WWW-Authenticate: NTLM 

その後、クライアントといくつかの要求を交換するサーバー - 実際/応答フェーズ挑戦し、ここで起こる特にサーバが生成し、チャレンジを送信クライアントはそれに基づいてレスポンスを計算して返信し、サーバーはドメインコントローラにコンタクトして検証します。わかりました。

しかし、私が認証されて任意のページに行くと、認証ヘッダーはもうありません。サーバーは、私がすでに認証されていることをどのように知っていますか?

P.S.私はIISがMACやIPによってクライアントを結びつけていると思っていましたが、確かにそうではありません。 NTLMはシングルブラウザで動作します。また、NTLM固有のCookieも見つかりませんでした。

答えて

1

httpのNTLMは、HTTP persistent connectionまたはhttpキープアライブを使用しています。

単一の接続が作成され、残りのセッションでは開いたままにします。

同じ認証接続を使用する場合は、認証ヘッダーをもう送信する必要はありません。

これは、キープアライブ接続をサポートしていない特定のプロキシサーバーでNTLMが機能しない理由もあります。

+0

本当にありがとうございました。 BTW - ウィキペディアによると、Windowsレジストリを介して変更可能な60秒間の非アクティブな時間が経過すると、永続的な接続がタイムアウトします。それはブラウザがケルベロスのチケットを1〜2分ごとに送りますか? – seeker

+0

私は実際の実装の詳細を知らない、私は資格情報がブラウザにキャッシュされていると思いますし、必要に応じて再送信することがあります。ネットワークトラフィックを調べて調べることができます。 –