2017-08-31 8 views
0

JDK8に1人はそうのようなkeytabファイルを作ることができる:はキータブJava9に

static File a(String spn, String password) throws Exception { 
    final File f = File.createTempFile("tmp_", ".ktab"); 
    final sun.security.krb5.internal.ktab.KeyTab ktab = sun.security.krb5.internal.ktab.KeyTab.create(f.getAbsolutePath()); 
    final sun.security.krb5.PrincipalName p = new sun.security.krb5.PrincipalName(spn, sun.security.krb5.PrincipalName.KRB_NT_SRV_HST); 
    ktab.addEntry(p, password.toCharArray(), 1, true); 
    ktab.save(); 
    return f; 
} 

JDK9では、これは

javax.security.auth.kerberos.KeyTab 

error: package sun.security.krb5 is not visible 

あり生成するが不足しit表示されますktabとパスワード機能。

Java9でキータブファイルを作成する最も良い方法は何ですか?

JDK8の1.5M sun.security.jarを使用するのが理想的ではありません。

ProcessBuilderのktabを使用する方が良いが、まだ醜いですが、ktabはJRE/JDK(8または9)には含まれていません。

+0

これは、sun。*クラスを使用しない理由です。それらはJVMの内部であり、宣伝されているものはいつでも消えることがあります。 –

+0

@RomainHippeauはい、私はそれが最良の選択肢が何であるかを尋ねている理由を理解しています。 – user1133275

+0

あなた自身のktab.exeツールを実行しようとしていますか?なぜProcessBuilder/Processを使ってそれを実行しないのか不思議です。いずれにしても、JDK 9の変更は、コンパイル時にJDK内部クラスにアクセスできないことです。これについては、JDK 9のドキュメントとリリースノートを参照してください。 –

答えて

0

使用していたAPIはJREの内部です。 Apache Kerbyプロジェクトの代替Kerberos実装を使用できます。例については、KeytabAddCommandを参照してください。

+1

9はいくつかの機能を隠しているように見え、外部のライブラリだけがオプションです。そして、私は9はコードの重複を減らすことになっていましたが、おそらく完全に削除したり、10で正式に使えるようにしたりします。 – user1133275

関連する問題