web-dev-qa-db-ja.com

Kerberos認証、サービスホスト、およびKDCへのアクセス

Webアプリケーション(ホスト名:service.domain.com)があり、Kerberos認証を使用してWindowsドメインにログインしているユーザーを識別したいと考えています。 Microsoft AD(Windows Server 2008 R2)はKerberosサービスを提供しています。

このサービスは、Spring SecurityKerberos拡張ライブラリを使用してSPNEGO/Kerberosプロトコルを実装するJava Webアプリケーションです。Kerberosチケットを認証するのに十分な共有シークレットを含むkeytabファイルをADに作成しました。これは、Webアプリケーションを使用してクライアントブラウザによって送信されます。

私の質問は、サービスホスト(service.domain.com)がKDC(kdc.domain.com)へのファイアウォールアクセス(TCP/UDP 88)を持っている必要があるか、またはサービスホストが復号化できるのに十分なキータブファイルであるかです。 Kerberosチケットと認証を提供しますか?

10
StrangeLoop

service[〜#〜] kdc [〜#〜]と通信する必要はありません。 [〜#〜] kdc [〜#〜]によって生成されたkeytabが必要ですが、任意の方法でコピーできます。彼らはお互いに話す必要はありません。

私が信じていることの過度に単純化されたバージョンは、多かれ少なかれ次のようになります。

サービスの設定

  • [〜#〜] kdc [〜#〜]サービスを生成しますkeytab(必要に応じて秘密鍵/パスワードのようなものです)
  • このkeytabserviceに何らかの方法で提供されます(scpまたは必要に応じてUSBスティックで運ばれます)

サービスに接続しているクライアント

  • クライアントサービスをリクエストしますチケットから[〜#〜] kdc [〜#〜]
  • [〜#〜] kdc [〜#〜]サービスを生成しますticketこれには、サービスでのみ復号化できる情報が含まれていますkeytab (これはサーバー上にあるファイルです)
  • clientサービスを送信しますticket to service
  • servicekeytabを使用してticketを検証します(ネットワーク通信は必要ありません)
11
chutz