2017-01-03 68 views
0

我試圖讓我現有的應用程序與Wildfly安全管理器一起工作。首先,我跑我的應用程序,並補充說,我需要響應standalone.xml像這樣的應用程序日誌文件例外配置:Wild Security安全管理器未處理JndiPermission

<subsystem xmlns="urn:jboss:domain:security-manager:1.0"> 
    <deployment-permissions> 
     <minimum-set> 
      <permission class="java.util.PropertyPermission" name="*" actions="read,write"/> 
      <permission .../> 
     </minimum-set> 
    </deployment-permissions> 
</subsystem> 

這是工作好了,直到我得到以下例外:

2017-01-03 16:00:22,119 ERROR [com.myapp.ClusteredCache] (ServerService Thread Pool -- 68) Failed to bind to JNDI name: java.security.AccessControlException: WFSM000001: Permission check failed (permission "("org.wildfly.naming.java.permission.JndiPermission" "/AppCacheImpl" "bind")" in code source "(vfs:/content/myapp-wildfly.jar <no signer certificates>)" of "null") 
     at org.wildfly.security.manager.WildFlySecurityManager.checkPermission(WildFlySecurityManager.java:273) [wildfly-elytron-1.0.2.Final.jar:1.0.2.Final] 
     ... 

我添加權限是這樣的:

<permission class="org.wildfly.naming.java.permission.JndiPermission" name="-" actions="all"/> 

或:

<permission class="org.wildfly.naming.java.permission.JndiPermission" name="&lt;&lt;ALL BINDINGS&gt;&gt;" actions="all"/> 

甚至專門:

<permission class="org.wildfly.naming.java.permission.JndiPermission" name="/AppCacheImpl" actions="bind"/> 

但仍WildFly拋出異常。任何想法我做錯了什麼?

+0

更新:我已經調試到WildFly 10.1和wildfly-鞘翅代碼。我注意到問題是WildFly在JndiPermission類上拋出了ClassNotFoundException。 該類存在於wildfly命名模塊(org.jboss.as.naming)中,但與該jar中的所有其他模塊路徑(org.wildfly.naming.java.permission.JndiPermission)不同,所以也許有一些東西特別在這裏做? – pduncan

回答

0

這是一個類加載錯誤。由於JndiPermission是怎麼wildfly命名模塊中指定,則需要指定一個模塊屬性,像這樣:

<permission 
    module="org.jboss.as.naming" 
    class="org.wildfly.naming.java.permission.JndiPermission" 
    name="-" 
    actions="all"/>