バックグラウンド
私が取り組んでいるプロジェクトでは、いくつかの異なるサーバーでGUIアプリケーションを実行しています。それらのユーザーインターフェイスの類似性のために、私はそれらのOMIを単一の統合されたインターフェイスに結合することを調査しています。現在、これらのアプリケーションはすべてVNCを介してリモートで表示できます。マスターディスプレイにいくつかのVNCビューアを隠して実行させ、これらのVNCセッションのインターフェイスをラップして、ネイティブアプリケーションのように見せることで、これを利用する予定です。
問題
シングルサインオンソリューションを設計するための指針を探しています。各アプリケーションの個別のログインを削除し、代わりにユーザーに統合ディスプレイのみにログインさせたいと考えています。そうすると、個々のアプリのそれぞれに自動的にログインします。
制約
- アプリケーションはすべて、Linux上で実行されるSwingベースのJavaアプリです。
- 認証は、ActiveDirectoryを備えたWindows2003Serverマシンによって実行されます。
- 私は、特注のソリューションよりも既成のソリューションを強く望んでいます。
アイデア
私の調査では、 KerberosとGSSAPIに向かっていることがわかりました。Kerberosのチケットベースのメカニズムは、このタスクに適しているようです。
トリッキーな点の1つは、これらのアプリケーションが常に実行されていることです。ユーザーがログインしたときに何らかの形で「通知」するための統合ディスプレイが必要です。起動時にKerberosログインを実行する通常のKerberosプログラムとは異なります。
Kerberosを使用している場合、さまざまなアプリケーションサーバーにチケットを転送する方法がわかりません。それらを転送する標準的な方法はありますか?「scp」などを使用しますか?または、独自のソケットベースのネットワークプロトコルを開発し、Javaプログラムを相互に接続して、その方法でチケットを転送しますか?
でも、細部にこだわるのは嫌だ。「テクノロジーXを検討したことがありますか?」などの一般的なアイデアでもありがたいです。または「VNCの代わりにXYZを試してください。これが自動的に行われます。」
更新
ここで回答と説明を編集します...
とにかく何らかの認証を行う必要があり、VNCは実行中のプログラムにのみビューをエクスポートするため、VNCセッションはチケットを転送できないと考えましたか?
はい、確かに。Java+VNCは私たちが今持っているものです。アプリをリモートで表示するためのより良い方法があれば、VNCを別のものに変更することができます。それらを書き直さずに、つまり。理想的な解決策は、それらを別個のクライアントとサーバーに分割し、すべてのGUIコードをクライアントに配置することですが、それは5つ星の難しさであり、1つまたは2つ星が必要です。
2人のユーザーが同時にログインする場合を考えましたか?彼らは同じアプリを見ますか?それともこれは禁止されますか?
ええ、私はそれを考慮しました。同じアプリが表示されるか、禁止されます。この特定のシステムに関する限り、どちらのソリューションでも問題ないため、これは大したことではありません。
ローカルホストでXサーバーを使用して、クライアントアプリケーションウィンドウをエクスポートすることを検討しましたか?
ええ、これは素晴らしいでしょう。これは、すでに実行されているアプリで実行できますか?これらのアプリは、すでに起動した後で接続する必要があります。誰かが中央ビューアを起動したときに、オンデマンドでそれらを開始することはできません。