首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Servlet上使用@RunAs注释

在Servlet上使用@RunAs注释
EN

Stack Overflow用户
提问于 2014-09-26 18:48:11
回答 1查看 937关注 0票数 0

我有一个关于@RunAs的简单问题。

除了EJB之外,我还可以在Servlet上使用@RunAs来传播安全角色吗?例如:

我有一个公共servlet:

代码语言:javascript
复制
@WebServlet(name = "RunAsServlet", urlPatterns = "/runAs")
@RunAs("Admin")
public class RunAsServlet extends HttpServlet {

@EJB
private MyEjb ejb;

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    resp.getWriter().write(ejb.doSomething());
    }
}

并且EJB在“Admin”角色下受到保护:

代码语言:javascript
复制
@Stateless
@RolesAllowed("Admin")
public class MyEjb {

@Resource
private SessionContext sessionContext;

public String doSomething() {

在这种情况下,我应该能够调用RunAsServlet,因为@RunAs在它上面,它应该具有适当的角色"Admin“来从web请求中调用EJB受保护的方法,我对这个例子正确吗?或者我需要其他更多的配置?

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2014-09-26 19:49:20

您需要将特定用户映射到roleOnServlet角色,并且此用户还必须属于Admin角色。要么是打字错误,要么是你有两个不同的角色roleOnServlet != Admin。通常,在servlet中使用的角色名称与在EJB中必须调用的角色名称相同。在您的示例中,尽管servlet将以roleOnServlet角色中的用户身份运行,但他不必同时处于Admin角色中,这将导致错误。

@RunAs不会将当前用户更改为具有该角色,而是使用单独的用户,该用户必须是映射到roleOnServlet角色的用户之一。

用户到runAs角色的映射是特定于容器的,因此如果您在这方面需要帮助,请添加您使用的服务器的信息。

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

https://stackoverflow.com/questions/26057803

复制
相关文章

相似问题

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