2013-08-16 29 views
0

我有一個Java API與Kerberos服務器通信並執行各種操作。截至目前,我的API請求Kerberos服務器的不可再次授權票據。據我所知,jaas配置文件有一個選項,將renewTGT選項設置爲true,以便發行可更新票證。然而,Jaas似乎對設置「renewUntil」時間有很多限制。任何人都可以告訴我,我們可以如何申請可更新的機票並控制其可更新性?基本上,有沒有一種方法可以執行與Java操作類似的操作:kinit -R?提前致謝。Jaas - 請求可更新的Kerberos票據

+0

其實,'renewTGT'應該做的。爲什麼不啓用日誌記錄並使用Wirshark來查看Java實際上做了什麼? –

+0

謝謝邁克爾。我確實啓用了日誌功能,並嘗試使用wireshark捕獲請求/響應。即使將renewTGT設置爲true,所請求的票據也是不可更新的。是否有任何其他配置需要執行? – user2690793

+0

這可能是KDC中的一項設置。問你的管理員。 –

回答

2

從JDK7(1.7.0_55)開始,JAAS Krb5LoginModule在驗證時不提供請求可更新TGT的任何選項,因此目前無法使用JAAS進行此操作。您可能可以實現這一點,但您需要直接使用內部Kerberos類,繞過JAAS。

在內部,Krb5LoginModule實例化sun.security.krb5.KrbAsReqBuilder以使用提供的密碼或keyTab獲取憑證。 KrbAsReqBuilder有一個setOptions(KDCOptions options)方法,但這不會在登錄模塊中調用。如果可以訪問它,您可以撥打KDCOptions#set(KDCOptions.RENEWABLE, true),如果KDC配置爲允許可更新票證,那麼我會期望返回的票證是可更新的。