Jboss JMS调用覆盖当前jaas主题

Jboss JMS调用覆盖当前jaas主题,jboss,ejb,jms,jaas,Jboss,Ejb,Jms,Jaas,我有一个应用程序使用JAAS来实现安全性,它在JBoss AS中运行JMS和EJB组件。javax.security.auth.login.LoginContext的对象用于在调用任何方法之前验证权限。我有一个调用EJB的功能,该功能使用角色权限(通过EJB部署描述符)进行保护。在调用EJB之前,有一个将消息放入JMS队列的代码 问题在于主题对象在JMS队列代码之前包含正确的用户详细信息。一旦JMS代码被执行,主题将更改为guest,因此对EJB的执行将失败,因为guest用户没有调用EJB的正

我有一个应用程序使用JAAS来实现安全性,它在JBoss AS中运行JMS和EJB组件。javax.security.auth.login.LoginContext的对象用于在调用任何方法之前验证权限。我有一个调用EJB的功能,该功能使用角色权限(通过EJB部署描述符)进行保护。在调用EJB之前,有一个将消息放入JMS队列的代码

问题在于主题对象在JMS队列代码之前包含正确的用户详细信息。一旦JMS代码被执行,主题将更改为guest,因此对EJB的执行将失败,因为guest用户没有调用EJB的正确角色。并以以下异常结束

[org.jboss.ejb.plugins.SecurityInterceptor] Error in Security Interceptor
java.lang.SecurityException: Denied: caller with subject=Subject:
    Principal: guest
    Principal: Roles(members:john,guest,j2ee)
 and security context post-mapping roles=Roles(john,guest,j2ee,): ejbMethod=someEjbMethod
我尝试在JMS调用后选中选项重新分配初始主题,以便EJB上下文引用原始调用方标识,但没有找到任何。
如果您有任何线索或帮助,我们将不胜感激。

您能添加JMS提供商的详细信息吗?JBOSS还是别的什么?您好Monty024,JMS提供程序仅来自JBOSS,没有外部提供。