首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@RunAs和角色传播

@RunAs和角色传播
EN

Stack Overflow用户
提问于 2013-09-03 23:00:12
回答 1查看 871关注 0票数 2

Glassfish-3.1.2.2。

我的项目中有1个Servlet和2个EJB。

Servlet->初始化->打印

// EJB初始化代码

代码语言:javascript
复制
@Stateless
@RunAs("SYSTEM")
@DeclareRoles({"SYSTEM"})
public class Init {

@Resource
EJBContext ejb;
@EJB
private Print print;

public void initialize() {

System.out.println("**********" + ejb.getCallerPrincipal().getName());
System.out.println("**********" + ejb.isCallerInRole("SYSTEM"));

print.printline();
}
}

// EJB打印代码:

代码语言:javascript
复制
@Stateless
@DeclareRoles({"SYSTEM"})
public class Print {

@Resource
EJBContext ejb;

public void printline() {

System.out.println("**********" + ejb.getCallerPrincipal().getName());
System.out.println("*********" + ejb.isCallerInRole("SYSTEM"));

}
}

//执行结果:

代码语言:javascript
复制
INFO: **********ANONYMOUS (OK)
INFO: **********false (OK)

INFO: **********system (OK)
INFO: **********false (? )

为什么我得到的是第二个false (我期望是true)?

web项目与ejb项目的映射

代码语言:javascript
复制
  <security-role-mapping>
  <role-name>SYSTEM</role-name>
  <group-name>system</group-name>
  </security-role-mapping>

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-09-05 00:28:21

我找到了问题所在。实际上,在映射中

'<‘主体名称’>‘用户名’‘

必须使用与组关联的用户名指定。

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

https://stackoverflow.com/questions/18595507

复制
相关文章

相似问题

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