POC の 1 つで Krb5LoginModule を使用しています。useDefaultCache=true と renewTGT=true を指定しました。
renewTGT=true について言及しましたが、チケットの有効期限が切れると、コードは例外をスローします。Windows レジストリで allowtgtsessionkey の値を 1 に設定しました (XP SP2 を実行しています)。KDC (ActiveDirectory) 設定はデフォルトです。チケットの有効期間 = 10 時間、更新リクエストのしきい値 = 7 日。
ソースコード
import java.util.HashMap;
import java.util.Map;
import javax.security.auth.Subject;
import com.sun.security.auth.module.Krb5LoginModule;
public class Temp3 {
public static void main(String[] args) throws Exception {
System.setProperty("sun.security.krb5.debug", "true");
Subject subject = new Subject();
Krb5LoginModule krb5 = new Krb5LoginModule();
Map <String, String> map = new HashMap <String, String>();
map.put("useTicketCache", "true");
map.put("doNotPrompt", "true");
map.put("renewTGT", "true");
map.put("debug", "true");
krb5.initialize(subject, null, null, map);
krb5.login();
krb5.commit();
System.out.println(subject);
}
}
チケットの有効期限が切れていない場合、つまり上記のコードを実行してから 10 時間以内に kinit を実行した場合、コードは正常に機能します。
SQL Server ドライバー (バージョン 4.0) を使用して JDBC ベースのアプリケーションを実行する必要があるため、この POC を作成しました。データベースの再接続の試行中に、長時間実行されているサービスが失敗することは望ましくありません。これは、パイプの破損につながるネットワークの不具合などの要因が原因で発生する可能性があります。