问题陈述: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;
请帮忙!