gpt4 book ai didi

security - @RunAs 和角色传播

转载 作者:行者123 更新时间:2023-12-04 04:43:08 25 4
gpt4 key购买 nike

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>

谢谢你。

最佳答案

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

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

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

关于security - @RunAs 和角色传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18595507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com