Wildfly 10.1.0获得"匿名"作为EJB中的主要名称

时间:2017-10-21 12:39:12

标签: wildfly

问题陈述:context.getCallerPrincipal().getName()总是给出#34;匿名"具有以下客户端和服务器设置

我已完成所需的所有设置。我的安全域使用Custom spring安全模块进行JAAS登录。客户端充当应用程序的安装程序。主应用程序部署在wildfly 10.1上,安装程序作为独立应用程序启动,从服务器访问远程EJB。 EJB访问是成功的,但是当我从上下文访问调用者原则时,它总是给出"匿名"

客户端设置:

jboss-ejb-client.properties:

    remote.connections=default
    remote.connection.default.port=8080
    remote.connection.default.host=127.0.0.1
    remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
    remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
    remote.connection.default.username=root
    remote.connection.default.password=catch22*

初始上下文创建:

    Properties prop1 = new Properties();
    prop1.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
    prop1.put("org.jboss.ejb.client.scoped.context", "true");

System.out.println("setup()  ################### 1");
context = new InitialContext(prop1);

使用jboss-client.jar

我使用了" WILDFLY_HOME / bin / client"中提供的jboss-client.jar lib。目录

服务器端设置

ejb领域:

在standalone-full.xml

中添加了以下ejb领域
    <security-realm name="ejb-outbound-realm">
        <server-identities>
            <secret value="Q29ubmVjdGlvblBhc3N3b3JkMSE="/>
        </server-identities>
    </security-realm>

远程子系统设置:添加绑定连接如下

    <outbound-connections>
        <remote-outbound-connection name="ejb-outbound-connection" outbound-socket-binding-ref="ejb-outbound" security-realm="ejb-outbound-realm" username="root">
            <properties>
                <property name="SASL_POLICY_NOANONYMOUS" value="false"/>
                <property name="SSL_ENABLED" value="false"/>
            </properties>
        </remote-outbound-connection>
    </outbound-connections>

违反绑定连接我添加了以下套接字绑定组

<outbound-socket-binding name="ejb-outbound">
    <remote-destination host="localhost" port="8080"/>
</outbound-socket-binding>

application-users.properties:

root=7c5b7db204cb436044a4148094ef152e

application-roles.properties:

此文件无变化

会话Bean更改

@Stateless
@Local(AbstractEnterpriseSessionFacadeLocal.class)
@Remote(AbstractEnterpriseSessionFacadeRemote.class)
@SuppressWarnings({WarningConst.UNCHECKED, "rawtypes"})
@PermitAll
//@org.jboss.ejb3.annotation.SecurityDomain("acegi-simple")
public class AbstractEnterpriseSessionFacadeBean<T, E extends IGeneralObject> implements AbstractEnterpriseSessionFacade {

injection of context in above class

@Resource
    private transient SessionContext context;

完成上述设置后,当我拨打context.getCallerPrincipal().getName()时,它总是给我&#34;匿名&#34;

请帮忙!

0 个答案:

没有答案