2011-10-20 26 views
0

現在、JAASを使用し、Active Directoryを実行しているWindowsサーバーから送信されたチケット許可チケットを取得することで、Javaアプリケーションのユーザーを認証できます。これはjavaのKrb5LoginModuleで簡単に行えます。SSH /その他のアプリケーション用にJavaで取得したTGTの使用

私はjavaアプリケーションからsshコマンドを実行し、パスワードを要求しないようにsshを有効にするためにTGTを使用したいと思います。私はkerberosで動作するsshを得るためのチュートリアル(OpenSSH & Kerberos)をいくつか見てきましたが、彼らはkinitを使ってTGTを取得し、チケットは/ tmp/krbcc_XXXに保存されています。チケットが生成された後、自由にsshすることができます。

TGTをディスクに書き込んで/ tmp/krbcc_XXXに格納するか、PrivilegedActionでsshコマンドを実行できますが、いずれかが動作するかどうかはわかりません。これを行うための受け入れられた方法がありますか?

基本的に、私はパスワードの入力を私に聞かないで、それをこのような何かを呼び出し、持っていると思います:あなたはSSH要求を開始します最初の人明確にする必要があり

// Create Command. 
List<String> arguments = new ArrayList<String>(); 
arguments.addAll(Arrays.asList("ssh", "[email protected]", "xterm")); 

// Run SSH command. 
ProcessBuilder process = new ProcessBuilder(arguments).start(); 

答えて

1

。 Javaまたは基礎となるLinux/Unixシステムです。後者の場合、これはクロスプラットフォームではなく、Javaの方法ではありません。 KeberosをサポートするJava SSH implを使用する必要があります。すべてがスムーズに進むはずです。 JSchは、純粋なJavaのimplで、gss-api-with-micをサポートしています。

一方で、あなたはそれをやった後、klistを試してみてください。.. LoginContextで作成Subjectから民間の資格情報を取得し、デフォルトのCCファイルの場所にそれを書くために試みることができます。 ccファイルを読み込むと、完了です。これで問題が解決しない場合は、SunのCC reader codeを調べてそれを元に戻すことができます。おそらく、sun.security.krb5.internal.ccache.FileCredentialsCacheはその更新と保存の方法と共に興味深いものです。タスクは、プライベートサブジェクトの資格情報を希望のクラスsun.security.krb5.internal.ccache.Credentialsと互換性を持たせることです。 :このソリューションは完全にSunに依存します。私は最初のアプローチに行くか、むしろkinitを最初に実行します。