2011-08-13 31 views
2

我寫了一個自己的安全管理器,我的問題是,我從我的程序中的其他用戶運行代碼,我必須確保沒有濫用。Java安全管理器找出誰要求訪問

所以我的問題是:我如何能夠找到在安全管理器的方法,誰要求在checkXXXXX()方法訪問。

謝謝

回答

2

不,在一般情況下沒有簡單的方法來做到這一點。

(如果你是一個Web容器內運行,這可能提供一種方式來獲得的當前請求的認證細節保留。但是,這聽起來並不像你的用例。)

我想有您可以嘗試實現這一點的各種方法,但您需要小心以防止欺騙用戶身份的代碼。一個想法是將每個用戶身份與一個獨特的ThreadGroup相關聯,並讓安全管理器阻止其他線程組中的線程創建;閱讀關於Thread(ThreadGroup group, Runnable target, String name)的javadoc,注意它對線程組檢查的說明。

+0

感謝您的回答。我已經使用安全密鑰阻止其他線程中的線程創建,您必須在其中註冊自己的線程,才能創建線程。 但是在一個例子中,你幫了我很多,因爲我現在知道安全管理器是由Thread自己調用的,所以我可以找出ThreadGroup和Thread ID。因此,對於我來說,使用安全密鑰註冊線程也是沒有問題的! 謝謝! – Nicolas