我使用 jboss 作为 7.1.1.Final 并使用 LdapExtLoginModule 配置了一个安全域。登录工作到目前为止。
我现在想访问 SLSB 中模块加载的角色。我知道如何访问用户名。我的示例使用 ejb 3.1 并将用户名打印到 System.out。
我不知道如何访问这些角色,也没有在文档中找到任何内容。EJBContext 提供了方法 isCallerInRole(String) ,它证明上下文本身知道角色,但我找不到返回一组角色的方法。
我知道我可以编写一个自定义 LoginModule 来扩展 LdapExtLoginModule 并设置一个包含角色的自定义主体。但也许有一种使用现有功能的更简单的方法。有人知道这种方法吗?
SLSB 代码:
@Stateless
@Remote(IAService.class)
public class AService implements IAService
{
@Resource
private EJBContext context;
@Override
public void printUserData() {
System.out.println("Name: " + context.getCallerPrincipal().getName());
// TODO print roles
}
}