Wildfly 安全管理器:javax.management.MBeanPermission 权限失败

Wildfly Security Manager : Permission failed for javax.management.MBeanPermission

我已经设置了我的 JBOSS Wildfly10。我将 standlone.conf.bat 文件中的 SECMGR 标志启用为 true 以启用 java 安全管理器,并且由于我的 war 部署在 wildfy 10 中,我将在 standalone.xml 中设置以下权限作为下面并出现以下错误:

14:49:56,804 INFO [stdout] (ServerService Thread Pool -- 58) 2017-03-28 14:49:56,804 ServerService Thread Pool -- 58 ERROR Could not unregister MBeans for org.apac he.logging.log4j2:type=2483b420,component=Loggers,name=*,subtype=RingBuffer java.security.AccessControlException: WFSM000001: Permission check failed (permission "( "javax.management.MBeanPermission" "-#-[-]" "queryNames")" in code source "(vfs:/C:/wildfly-10.0.0.Final/standalone/deployments/mySample.war/WEB-INF/lib/log4j-core-2.5. jar )" of "null")

我的 Standalone.xml 配置如下所以请谁能帮我解决我做错的地方?

 <subsystem xmlns="urn:jboss:domain:security-manager:1.0">
                <deployment-permissions>
                    <minimum-set>
                        <permission class="java.lang.RuntimePermission" name="shutdownHooks"/>
                        <permission class="java.util.PropertyPermission" name="*" actions="read"/>
                        <permission class="java.lang.RuntimePermission" name="createClassLoader"/>
                        <permission class="java.lang.RuntimePermission" name="getClassLoader"/>
                        <permission class="java.lang.RuntimePermission" name="shutdownHooks"/>
                        <permission class="javax.management.MBeanServerPermission" name="createMBeanServer"/>
                        <permission class="java.lang.reflect.ReflectPermission" name="suppressAccessChecks"/>
                        <permission class="javax.management.MBeanPermission" name="registerMBean"/>
                        <permission class="javax.management.MBeanPermission" name="queryNames"/>
                    </minimum-set>
                </deployment-permissions>
            </subsystem>

queryNamesregisterMBean 权限不太正确。 name 属性应该是 MBean 的名称。 registerMBeanqueryNames是动作。

它应该看起来像:

<permission class="javax.management.MBeanPermission" name="*" actions="registerMBean"/>
<permission class="javax.management.MBeanPermission" name="*" actions="queryNames"/>

您可以指定具体名称或仅使用 * 作为通配符。查看 MBeanPermission 了解更多详情。

嗨,James,感谢您的回复,正如您所说,我对 java 安全管理有点陌生,我已经更正了权限并引用了 MBeanPermission link,这对我很有帮助,那个问题得到了解决固定。