Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java sessionContext.getCallerPrincipal().getName()始终返回";“匿名”;_Java_Jboss_Ejb 3.0_Principal_Sessioncontext - Fatal编程技术网

Java sessionContext.getCallerPrincipal().getName()始终返回";“匿名”;

Java sessionContext.getCallerPrincipal().getName()始终返回";“匿名”;,java,jboss,ejb-3.0,principal,sessioncontext,Java,Jboss,Ejb 3.0,Principal,Sessioncontext,我正在从事一个包含EJB组件并部署在JBoss EAP 7.0.7中的web项目。一些EJB是从独立的客户端应用程序调用的 问题是,尽管身份验证似乎工作正常,但主体并没有传播到EJB层,因此当我调用sessionContext.getCallerPrincipal().getName()时,它只返回“匿名” 看来我的配置工作正常。我在standalone.xml和jboss-web.xml中设置了一个安全域,然后注释了我的EJB以使用配置的安全域 当我从web应用程序中调用EJB时,它工作得非常

我正在从事一个包含EJB组件并部署在JBoss EAP 7.0.7中的web项目。一些EJB是从独立的客户端应用程序调用的

问题是,尽管身份验证似乎工作正常,但主体并没有传播到EJB层,因此当我调用sessionContext.getCallerPrincipal().getName()时,它只返回“匿名”

看来我的配置工作正常。我在standalone.xml和jboss-web.xml中设置了一个安全域,然后注释了我的EJB以使用配置的安全域

当我从web应用程序中调用EJB时,它工作得非常好。主体被传播并设置为登录用户(我使用了HttpServletRequest.login api)


那么,如何将主体传播到EJB层,就像使用HttpServletRequest.login进行传播一样?是否有类似于我提到的api的api可以在独立应用程序中实现?我已经找了一段时间了,但到目前为止我什么都没找到。希望有人能帮助我。谢谢

这些链接可能对您的案例有用:谢谢,但这对我来说不起作用,相反,我发现my standalone.xml中的默认安全域需要引用到我的自定义安全域。现在它给了我正确的原则!不过我还有一个问题,我的部分代码需要调用Security.doAs(subject,PrivilegedAction)。我可以使用LoginContext进行身份验证以切换主体,但是当EJB在我的PrivilegedAction.run方法中查找时,主体仍然设置为我用来登录到我的web应用的原始用户。这些链接可能对您的情况有用:谢谢,但这对我不起作用,相反,我发现我的standalone.xml中的默认安全域需要引用到我的自定义安全域。现在它给了我正确的原则!不过我还有一个问题,我的部分代码需要调用Security.doAs(subject,PrivilegedAction)。我能够使用LoginContext来切换主体进行身份验证,但是当EJB在我的PrivilegedAction.run方法中查找时,主体仍然设置为我用来登录到我的web应用的原始用户。