【问题标题】:@RunAs and Role Propagation@RunAs 和角色传播
【发布时间】:2013-09-06 21:04:54
【问题描述】:

Glassfish-3.1.2.2.

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

Servlet--------->初始化--------------->打印

// EJB 初始化代码

@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 打印代码:

@Stateless
@DeclareRoles({"SYSTEM"})
public class Print {

@Resource
EJBContext ejb;

public void printline() {

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

}
}

// 执行结果:

INFO: **********ANONYMOUS (OK)
INFO: **********false (OK)

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

为什么我得到第二个错误(我期待的是真的)?

web项目与ejb项目的映射

  <security-role-mapping>
  <role-name>SYSTEM</role-name>
  <group-name>system</group-name>
  </security-role-mapping>

谢谢。

【问题讨论】:

    标签: security jakarta-ee glassfish ejb roles


    【解决方案1】:

    我找出问题所在。其实在映射中

    ''用户名''principal-name'>'

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

    【讨论】:

      猜你喜欢
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2020-09-13
      相关资源
      最近更新 更多