经过身份验证的用户的角色是什么 - Java

What is the authenticated uesr's role - Java

早上好 我在 weblogic 10 上使用 ejb2(较旧的应用程序)。

我的会话 bean 中有一些方法可以安全地由特定角色执行。
我用

注释的每个 ejb 接口方法
 `@ejb.permission role-name="role1, role2"`

由于某些方法可能由几个不同角色的用户执行,我如何知道哪个角色运行该方法?

我知道如何知道 "caller is in a certain role"

Principal principal = ctx.getCallerPrincipal() ;
boolean isRole =  ctx.isCallerInRole("role2") ;

但是,有没有办法获取实际调用者的角色?像 "getCallerRole()" 之类的东西?

在 xml 文件中 "ejb-security-roles.xml" 我指定应用程序域中的角色

<security-role>
 <role-name>role1</role-name>
 <role-name>role2</role-name>
</security-role>

然后,每个角色都映射到 "weblogic-security-role-assignment.xml"

中的 LDAP
<security-role-assignment>
  <role-name>role1</role-name>
  <principal-name>Role1User</principal-name>
</security-role-assignment> 
<security-role-assignment>
  <role-name>role2</role-name>
  <principal-name>Role2User</principal-name>
</security-role-assignment>`

谁能帮帮我,指引我正确的思路?

只需使用if (ctx.isCallerInRole("role2")) {

根据 Oracle Accessing an Enterprise Bean Caller’s Security Context, 这是检查用户角色的唯一方法。