セキュリティプロトコル(NTLM の基本)
2011/11/14 1件のコメント
よく聞かれるので、まとめておきます。
NTLM は、Windows ファミリーで使われている既存の認証プロトコルです。
Active Directory の登場以降、Kerberos に移行してきていますが、NTLM は重要なプロトコルであることには
変わりません。NLTM はチャレンジ/レスポンスという単純なシーケンスになっています。
NTLM の認証シーケンスは次のようになります。(図を書きました)
- クライアントは、アカウント名、ドメイン名を使い、サーバーに認証要求を行う。
- サーバーは、クライアントから受け取った情報をドメインコントローラーに転送する。
- ドメインコントローラーは、チャレンジを生成する。
チャレンジはクライントのパスワードからランダムに生成される(クライアントとドメインコントローラーのみ解釈できる)。 - ドメインコントローラーは生成したチャレンジをサーバーに転送する。
- サーバーはチャレンジをクライアントに転送する。
- クライアントは、パスワードを使いチャレンジを解析して、アルゴリズムに応じてレスポンスを生成する。
- クライアントはサーバーにレスポンスを送信する。
- サーバーは、クライアントから受け取ったレスポンスをドメインコントローラーに転送する。
- ドメインコントローラーは、レスポンスを調べ、生成したチャレンジをベースに作成されたものであることを確認する。
この段階でクライアントの認証は完了している。 - ドメインコントローラーは、クライアントが認証されたことをサーバーに通知する
この図は、クライアントとドメインコントローラーの間にサーバー(アプリケーションサーバーを想定)を入れていますが
クライアントとドメインコントローラーで直接認証を行う場合も、同じ考え方です。
NTLM は、何気にネットワークトラフィックが多いので、アプリケーションサーバーは、アプリケーション以外にも負荷が
かかるので、それなりのスペックにしてあげた方がよいです。
NTLM には、v1 と v2 がありますが、Vista 以降は NTLM v2 がメインになってきています。
参考情報
- [MS-NLMP]: NT LAN Manager (NTLM) Authentication Protocol Specification
http://msdn.microsoft.com/en-us/library/cc236621(v=PROT.10).aspx - 3.3.1 NTLM v1 Authentication
http://msdn.microsoft.com/en-us/library/cc236699(v=PROT.10).aspx - 3.3.2 NTLM v2 Authentication
http://msdn.microsoft.com/en-us/library/cc236700(v=PROT.10).aspx
ピンバック: Windowsログオン認証についてのメモ | 科学の箱