【问题标题】:Check if a user is enabled with Glassfish 4 JDBCRealm检查用户是否启用了 Glassfish 4 JDBCRealm
【发布时间】:2014-04-27 15:39:36
【问题描述】:

我正在尝试创建一个登录页面,该页面通过我的 Glassfish 服务器上的 JDBCRealm 对用户进行身份验证(我认为这是最简单的方法),到目前为止我设法让它工作。 但是在数据库的用户表中,我有一个“is_active”列,当该列包含“false”时,我希望服务器拒绝登录尝试(就像密码错误一样)。 我对 java ee 还很陌生,不知道我应该在哪里寻找这个。有谁知道怎么做?

【问题讨论】:

    标签: java jakarta-ee glassfish-4


    【解决方案1】:

    首先,Glassfish 不提供更好的默认安全领域,我没有任何世俗的理由。 JDBCRealm 不支持加盐用户密码,也不支持更现代的散列技术如 PBKDF2 等...

    话虽如此,我认为如果你想使用默认的 JDBCRealm,这里有一种方法可以强制只有“活跃”用户才能访问某些页面。

    有三个类似于下面的表(这些表用于 postgres)。

    CREATE TABLE users
    (
      user_id serial PRIMARY KEY,
      email character varying(255) NOT NULL UNIQUE,
      passhash character varying(255) NOT NULL
    );
    CREATE TABLE users_groups
    (
      users_groups_id serial PRIMARY KEY,
      user_email character varying(255) NOT NULL REFERENCES users(email),
      group_name character varying(20) NOT NULL REFERENCES groups(group_name)
    );
    CREATE TABLE groups
    (
      group_name character varying(20) PRIMARY KEY
    );
    

    创建一个“活动”组,而不是 users 表上的 is_active 列。然后,您可以强制该组/角色的成员访问您的 Web 应用程序的某些部分(确保正确设置组和角色之间的映射)。

    例如,如果您希望所有 url 只能由“活跃”用户访问,您可以在 web.xml 中添加如下内容:

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>private</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>active</role-name>
        </auth-constraint>
        <user-data-constraint>
            <transport-guarantee>NONE</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
    

    我假设您的密码哈希代码正常工作,并且使用 glassfish 成功设置了 db 表?可以说是脖子疼。

    有关使用角色/组的文档: http://docs.oracle.com/javaee/6/tutorial/doc/bnbxj.html

    【讨论】:

    • 效果很好,谢谢!作为跟进,我还找到了另一个解决方案。通过在数据库中使用用户名、密码、角色创建视图并添加 WHERE 子句,仅选择“is_active”设置为 true 的用户,并将 JDBCRealm 指向视图而不是不同的表。
    猜你喜欢
    • 2020-03-12
    • 2011-08-27
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    相关资源
    最近更新 更多