Wildfly 安全管理器不处理 JndiPermission

Posted

技术标签:

【中文标题】Wildfly 安全管理器不处理 JndiPermission【英文标题】:Wildfly Security Manager not processing JndiPermission 【发布时间】:2017-01-03 21:18:02 【问题描述】:

我正在尝试让我现有的应用程序与 Wildfly 安全管理器一起使用。首先,我正在运行我的应用程序并将我需要的配置添加到standalone.xml 中,以响应应用程序日志文件中的异常:

<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 仍然会抛出异常。知道我做错了什么吗?

【问题讨论】:

更新:我一直在调试 WildFly 10.1 和 wildfly-elytron 代码。我注意到问题在于 WildFly 在 JndiPermission 类上抛出了 ClassNotFoundException。该类存在于 wildfly 命名模块 (org.jboss.as.naming) 中,但与该 jar (org.wildfly.naming.java.permission.JndiPermission) 中的其他所有内容具有不同的模块路径,所以也许有一些特别之处在这里做吗? 【参考方案1】:

这是一个类加载错误。由于在 wildfly-naming 模块中如何指定 JndiPermission,您需要指定一个模块属性,如下所示:

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

【讨论】:

以上是关于Wildfly 安全管理器不处理 JndiPermission的主要内容,如果未能解决你的问题,请参考以下文章

CAD2014安全系统软件锁许可管理器不起作用或未正确安装

解决方案资源管理器不显示该文件夹,尽管该文件夹存在于我的本地驱动器(本地副本)Visual Studio [重复]

下载管理器不工作

当应用被用户杀死时,工作管理器不工作。为啥?

为啥 MySQLdb 连接上下文管理器不关闭游标?

Wildfly - 更改管理领域的密码