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

时间:2017-06-26 16:10:05

标签: java roles user-permissions

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

我的会话bean中有一些方法可以保护某些角色执行 我的每个ejb接口方法都用

注释
 `@ejb.permission role-name="role1, role2"`

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

我知道怎么知道"来电者是否担任某个角色"

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>

然后,每个角色都映射到&#34; weblogic-security-role-assignment.xml&#34;

中的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>`

任何人都可以帮助,指导我走正确的思路吗?

1 个答案:

答案 0 :(得分:1)

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

即可

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