【问题标题】:@RunAs for @WebService EJB@RunAs 用于 @WebService EJB
【发布时间】:2012-09-13 07:21:42
【问题描述】:

我有一个匿名的 WebService EJB - Web 服务调用工作正常。

现在我希望 WebService 作为特定的 SecurityRole 运行。

在 Web 服务中,我有以下注释:

@Stateless
@WebService
@DeclareRoles({ "LoggedUser" })
@SecurityDomain("my-jboss-real")
@RunAs("LoggedUser")
public class MyWebService { ...

现在我想从我得到的 Web 服务方法中使用 @RolesAllowed({"LoggedUser"}) 访问 @EJB

ERROR [org.jboss.aspects.tx.TxPolicy] javax.ejb.EJBTransactionRolledbackException: javax.ejb.EJBAccessException.message: 'Caller unauthorized'
WARN  [org.jboss.ejb3.stateless.StatelessBeanContext] EJBTHREE-1337: do not get WebServiceContext property from stateless bean context, it should already have been injected
ERROR [org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS] SOAP request exception
javax.ejb.EJBTransactionRolledbackException: javax.ejb.EJBAccessException.message: 'Caller unauthorized'
        at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:115)

我在 JBoss 5.1GA 上运行

这是正确使用@RunAs 还是有其他方法可以做到这一点。

编辑

添加:

@Resource
private WebServiceContext wsCtx;
@Resource
private EJBContext ejbCtx;

myWebServiceMethod(){
     ...
     System.out.println("EJBCtx: " + ejbCtx.getCallerPrincipal());
     System.out.println("EJBCtx: " + ejbCtx.isCallerInRole("LoggedUser"));
     System.out.println("WebContext: " + wsCtx.getUserPrincipal());
     System.out.println("WebContext: " + wsCtx.isUserInRole("LoggedUser"));
     ...

这个输出:

EJBCtx: anonymous
EJBCtx: false
WebContext: anonymous
WebContext: false

【问题讨论】:

    标签: java web-services security ejb


    【解决方案1】:

    JBoss AS 5 尤其是 6 在安全上下文和 @RunAs 方面存在很大缺陷,除了最基本的用例。

    已经修复了大量这些错误 AS 7. 你可以尝试在那里设置一个测试用例,看看你是否遇到了同样的问题。

    请注意@RunAs 不适用于在应用注解的 bean 中运行的代码。相反,它仅适用于从该 bean 调用的 bean。您可以将其视为“传出/传出”角色。

    更麻烦的是Java EE有一个严重的遗漏,那就是无法同时定义一个RunAsidentity。当您为“未经身份验证的”身份定义 RunAs 角色时,某些服务器反应不佳。 JBoss 具有用于 RunAs 标识的专有注释。如果这能让您更进一步,您可能想尝试一下。

    【讨论】:

      猜你喜欢
      • 2016-01-12
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 2013-05-01
      • 2017-01-03
      • 1970-01-01
      相关资源
      最近更新 更多