2013-01-17 49 views
1

我需要在我的Java應用程序中使用postdatable Kerberos ticket。但我在GSSContext界面中找不到任何方法。 Java不支持這種Kerberos功能嗎?Java中的Postdatable Kerberos票據

目的如下: 在我們的應用程序中,用戶可以設置一個將來會運行一段時間的批處理。並且應用程序服務器必須使用在批次執行時有效的授權票證,而原始票證可能已過期。

編輯:爲了澄清我先聲明:我發現GSSContextGSSContextImpl還有GSSContextImpl不給訪問setAuthTime()方法是隻在Krb5Context可用。沒有深入研究所有細節,似乎只有通過直接訪問無證類才能實現後期認證。

由於在獲取客戶端瀏覽器發送帶有正確標誌設置的票據方面似乎還有其他問題 - 就像@ Michael-O指出的那樣 - 我想我必須找到另一個解決方案,也許只是詢問用戶輸入用戶名和密碼,用批處理保存它們,然後在批處理啓動時請求新的票證。

postdated ticket的概念聽起來適合我的問題,但似乎缺乏實際用途,導致它沒有得到現有環境的良好支持。

+1

Frank,你真的讀過[RFC4120](http://www.ietf.org/rfc/rfc4120.txt)的2.4章?來自客戶端的TGT必須具有初始標誌「MAY-POSTDATE」。請先檢查一下。是的,Java GSS支持這一點,但我沒有嘗試過。查看[this](http://i.imgur.com/VPXrA.png)搜索。 –

+0

好點!由於客戶端是瀏覽器,也許我無法影響其票據設置。 – FrankPl

+0

我已經檢查過'kinit' unter Ubuntu,並且能夠設置ticket(TGT)=> postdatable的startdate。我還用'kerbtray'檢查了我的Windows憑據緩存,並且TGT不是'MAY-POSTDATE'。據我瞭解,由於SSPI使用這個給定的TGT,並且你不能有一個後期轉發的TGT。你應該在MIT Kerbros郵件列表中提出這個非常具體的問題。我真的很想聽到開發者的意見。 –

回答

0

除了我的評論:

弗蘭克,你真的讀RFC4120的第2.4章?來自客戶的TGT必須具有初始標記MAY-POSTDATE。請先檢查一下。是的,Java GSS支持這一點,但我沒有嘗試過。請參閱this搜索。

frank,there is解決您的問題。昨天剛剛來到我身邊。我已經回答了。這可能是一些工作來支持這個代碼,但它是值得的。

請參閱Generating AD Kerberos tickets without user password

+0

謝謝你。無論如何,我認爲我們會堅持要求用戶輸入用戶名和密碼的解決方案(因爲無論如何這都是當前版本的應用程序中的情況,所以從用戶角度來看沒有任何改變),然後只需生成一張新票在服務器上,當我們需要一個時間點。 – FrankPl

+0

雖然有效,但並不真正優雅。你的方法在密碼到期/更改的黃昏時將失敗,並重新提供新的密碼。 –

+0

我完全同意。但我必須平衡努力和結果。 – FrankPl