Wildfly-8.2.0 安全领域的远程处理子系统问题

Wildfly-8.2.0 Remoting Subsystem Issue with Security-realm

我在 http 连接器 (ApplicationRealm) 级别有一个安全领域,我的远程出站连接有另一个安全领域,即 MyRealm。当我设置 jboss-ejb-client 属性时,我设置了以下两个属性:

remote.connection.default.username=${用户名}
remote.connection.default.password=${密码}

这有助于我通过远程服务器对 ApplicationRealm 进行身份验证。我遇到的问题是,当我在远程服务器上时,无法通过安全领域:MyRealm,因为主体未在服务器之间共享,而且我没有或不知道发送所需信息的方法验证另一台服务器上的用户,因为我从 JBossCallbackHandler 获得的用户名和密码实际上是用于 ApplicationRealm 的凭据,而不是我验证第二个领域所需的凭据。

我试图删除 security-realm="ApplicationRealm" 但它失败了,因为它需要一个身份验证机制。

除了 username/password 之外,还有其他方法可以将信息发送到远程服务器,例如验证 MyRealm 的主体吗?有没有办法停用 ApplicationRealm、替换它或直接删除它?

    <subsystem xmlns="urn:jboss:domain:remoting:2.0">
        <endpoint worker="default"/>
        <http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/>
        <outbound-connections>
            <remote-outbound-connection name="remote-ejb-connection" outbound-socket-binding-ref="remote-ejb" username="ejb" security-realm="MyRealm" protocol="http-remoting">
                <properties>
                    <property name="SASL_POLICY_NOANONYMOUS" value="true"/>
                    <property name="SSL_ENABLED" value="false"/>
                    <property name="SASL_POLICY_NOPLAINTEXT" value="false"/>
                </properties>
            </remote-outbound-connection>
        </outbound-connections>
    </subsystem>

谢谢!

此处描述的情况是 WildFly 当前正在进行的安全工作的主要动机之一 - 从服务器到服务器的安全传播是我们正在积极努力实现的目标。

http://darranl.blogspot.co.uk/2015/07/upcomming-wildfly-security-changes.html

同时,以下快速入门演示了一种可以使用拦截器将身份从一台服务器传播到另一台服务器的方法:-

https://github.com/wildfly/quickstart/tree/9.x/ejb-security-interceptors

本质上,第二台服务器已经对第一台服务器进行了身份验证,因此本快速入门展示了当第一台服务器请求代表另一个用户执行请求时,第二台服务器如何信任第一台服务器。