2010-06-20 55 views
3

我正在使用Tomcat 6上的安全策略。我已成功授予我整個webapp的權限,但只想授予某些特定類的權限。但是,當我嘗試這樣做時,我的doPrivileged塊收到AccessControlException。授予單個類的權限

因爲我已經成功授予更通用的代碼庫,所以我回到該代碼庫,並在添加每個附加子目錄時進行測試。通過這種方式,最具體的補助,我能夠做出的工作是:

授予代碼庫 「文件:$ {}的catalina.home/webapps /目錄ROOT/WEB-INF/- 」{ ... }

如果我添加 「類/」,如:

授予代碼庫 「文件:$ {}的catalina.home/webapps /目錄ROOT/WEB-INF /班/ - 」{ ... }

然後我繼續看到AccessControlException。我試圖允許的類位於classes目錄下。該webapp被部署爲一個.war文件,並由Tomcat解包。

我在這裏做錯了什麼?我打算按照Tomcat提供的catalina.policy中提供的示例進行操作。

+0

我不確定你想用這個完成什麼。通常權限是基於每個用戶的基礎。 – rook 2010-06-20 20:20:41

+0

我試圖告訴Java SecurityManager允許某些類執行某些操作。 (請參閱http://tomcat.apache.org/tomcat-6.0-doc/security-manager-howto.html) – user371320 2010-06-20 21:42:17

回答

2

使用Java默認策略文件格式分配權限的最佳粒度是每個代碼源(即每個JAR或每個類目錄)。作爲一種解決方法,您可以將每個具有特權的類拆分爲自己的WEB-INF/lib中的JAR,併爲該JAR授予特定的權限。

可以使用自定義ClassLoader爲每個defineClass創建唯一的ProtectionDomain。 ProtectionDomains可以靜態授予每類權限,也可以創建專門的ProtectionDomain以允許自定義策略動態授予每類權限。