首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@RunAs for @WebService EJB

@RunAs for @WebService EJB
EN

Stack Overflow用户
提问于 2012-09-13 07:21:42
回答 1查看 1.7K关注 0票数 3

我有一个匿名的WebService EJB - webservice调用正在正常工作。

现在,我希望WebService作为一个特定的SecurityRole来运行。

在Webservice中,我有以下注释:

代码语言:javascript
复制
@Stateless
@WebService
@DeclareRoles({ "LoggedUser" })
@SecurityDomain("my-jboss-real")
@RunAs("LoggedUser")
public class MyWebService { ...

现在,我想从一个Webservice方法中访问一个具有@EJB@RolesAllowed({"LoggedUser"})

代码语言:javascript
复制
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的正确使用,还是有其他方法来做到这一点。

编辑

添加:

代码语言:javascript
复制
@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"));
     ...

这一产出如下:

代码语言:javascript
复制
EJBCtx: anonymous
EJBCtx: false
WebContext: anonymous
WebContext: false
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-22 19:28:30

JBoss作为5,尤其是6,在安全上下文和@RunAs方面都是非常糟糕的,除了最基本的用法之外。

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

请注意,@RunAs不适用于应用注释的bean中运行的代码。相反,它只适用于被称为从那个bean的bean。您可以将其视为“传出/出站”角色。

更麻烦的是,Java有一个严重的遗漏,这就是没有办法也定义RunAs标识。当您为“未经身份验证”的标识定义RunAs角色时,有些服务器的反应并不好。JBoss有一个用于RunAs标识的专有注释。如果这能让你更进一步的话,你可能会想试一试。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12401329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档