ejb有关角色和身份验证的安全问题

时间:2011-08-28 05:55:40

标签: java security login ejb roles

我很感激有人可以帮助我解决以下问题:

  1. @ RolesAllowed和@DeclareRoles注释之间有什么区别?
  2. 我开发了一个登录功能,根据数据库中的信息检查用户名和密码。但是,我想问一下如何为经过身份验证的用户分配一个角色,以便与上述注释一起使用。

2 个答案:

答案 0 :(得分:21)

答案 1 :(得分:2)

也许我的回答可能不正确,可能不完整。但它可以在这个参考文献中找到  http://openejb.apache.org/3.0/security-annotations.html

DeclareRoles 只能在班级使用 通过isCallerInRole(roleName)引用角色时,需要更新@DeclareRoles。

基本理念

  • 默认情况下,可以访问和记录业务接口的所有方法 是否

  • 注释在bean类上进行,而不是业务接口

  • 安全注释可以应用于整个班级和/或个人 方法

  • 必须通过声明所使用的任何安全角色的名称 @DeclareRoles

@RolesAllowed 可以在类级别和方法级别使用,以限制访问级别。

一个例子 混合类和方法级别限制 安全注释可以同时在类级别和方法级别使用。这些规则不会堆叠,因此标记'submitPatch'会覆盖默认的“committers”。

@Stateless
@DeclareRoles({"committer", "contributor"})
@RolesAllowed({"committer"})
public class OpenSourceProjectBean implements Project {

    public String svnCommit(String s) {
        return s;
    }

    public String svnCheckout(String s) {
        return s;
    }

    @RolesAllowed({"contributor"})
    public String submitPatch(String s) {
        return s;
    }
}

修改

以下是SQLLoginModule的代码段。您可以将此模块用作登录模块。这样,您就可以遵循JAAS标准。

在提交中,它会调用它来添加主体。

subject.getPrincipals().addAll(allPrincipals);

此外,您可以在此处查看更多详情http://openejb.apache.org/3.0/security.html

列出了您可以选择的其他选项。