Kerberos 認証処理

Kerberos 認証中に発生するイベントの順序を理解すると、認証の問題が発生した時に原因を判断しやすくなります。

  1. プリンシパルが、Kerberos 認証を必要とするサービスを要求します。例えば、ユーザが Reflection (Telnet クライアント) を起動して、telnserv.com というホストへの Telnet 接続を要求したとします。
  2. アプリケーションサーバ (この場合はホスト上の Telnet デーモン) が、Reflection に認証を要求します。
  3. Reflection は、Kerberos がこのプリンシパルに対する有効な発券許可チケット (TGT) を所有しているかどうか確認します。所有していない場合、Reflection Kerberos クライアントは、Key Distribution Center (KDC: 鍵配布センター) に対して TGT を求める要求を送信します。
  4. KDC はプリンシパルとレルムが有効であることを確認し、Reflection Kerberos クライアントに TGT とセッション鍵を送信します。
  5. Reflection Kerberos クライアントは、ユーザにパスワードを入力するように要求します。入力されたパスワードと、KDC が TGT とセッション鍵の暗号化に使用したパスワードが一致すると、Reflection Kerberos クライアントはメッセージを解読してセッション鍵を取得します (パスワードが間違っていた場合は、エラーメッセージが表示されて認証に失敗します)。
  6. Reflection Kerberos クライアントは、始めにユーザが要求したサービス (telnserv.com への Telnet 接続) に対する要求を生成して KDC に送信します。この要求には、TGT、そのプリンシパル自体を確認する認証者、およびそのプリンシパルが使用したいサービスの情報が含まれており、これらはすべてセッション鍵に暗号化されています。
  7. KDC が TGT を解読して、ワークステーションとサービスの間 (この場合は Telnet クライアントと telnserv.com 上の Telnet デーモンの間) のセッションに必要な新しい鍵と、telnserv.com への Telnet 接続に必要なサービスチケットを生成します。このチケットは、サービスの秘密鍵で暗号化されます。このメッセージは元のセッション鍵で暗号化され、Reflection Kerberos クライアントに返信されます。
  8. Reflection Kerberos クライアントが元のセッション鍵を使用してサービスチケットを取り出し、新しいセッション鍵を解読します。その後、Reflection にコントロールが返されます。
  9. Reflection が Telnet デーモンにサービスチケットを提示します。Telnet デーモンは資格情報を確認し、サービスチケットから取り出した情報を使用して、Reflection に対してデーモン自体を認証します。サービスチケットはサービスの秘密鍵で暗号化されているので、チケットが生成されているサービスだけがチケットを解読できます。
  10. Reflection がホスト (telnserv.com) にログインします。