首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectDB的自定义领域,使用ObjectDB和HTTP身份验证

ObjectDB的自定义领域,使用ObjectDB和HTTP身份验证
EN

Stack Overflow用户
提问于 2011-10-04 23:29:37
回答 3查看 434关注 0票数 1

我想为我的web服务实现,但我也希望使用ObjectDB来存储凭据。有办法这样做吗?我想我需要一个定制的领域,而且,有人已经这样做过,所以如果是,请举手。否则,请帮助我的实现。我已经检查了制作自定义领域的基本知识。是否可以以某种方式使其与JDBCRealm一起工作,或者更直接地说,是否有可能在GlassFish中创建一个使用ObjectDB服务器的JDBC资源?

到目前为止,我所做的是Realm的基础

代码语言:javascript
复制
package objectdbrealm;

import com.sun.appserv.security.AppservRealm;
import com.sun.enterprise.security.auth.realm.BadRealmException;
import com.sun.enterprise.security.auth.realm.InvalidOperationException;
import com.sun.enterprise.security.auth.realm.NoSuchRealmException;
import com.sun.enterprise.security.auth.realm.NoSuchUserException;
import java.util.Enumeration;
import java.util.Properties;

public class ObjectDbRealm extends AppservRealm {

    @Override
    public void init(Properties properties) throws BadRealmException, NoSuchRealmException {
        //initialize the realm
    }

    @Override
    public String getAuthType() {
        return "ObjectDB Realm";
    }

    @Override
    public Enumeration getGroupNames(String string) throws InvalidOperationException, NoSuchUserException {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}

,以及LoginModule

代码语言:javascript
复制
package objectdbrealm;

import com.sun.appserv.security.AppservPasswordLoginModule;
import com.sun.enterprise.security.auth.login.common.LoginException;

public class ObjectDbLoginModule extends AppservPasswordLoginModule {

    @Override
    protected void authenticateUser() throws LoginException {
        if (!authenticate(_username, _passwd)) {
            //Login fails
            throw new LoginException((new StringBuilder()).append("Login Failed for:").append(_username).toString());
        }
        String[] groups = getGroupNames(_username);
        commitUserAuthentication(groups);
    }

    private boolean authenticate(String username, char[] password) {
        /*
        Check the credentials against the authentication source,
        return true if authenticated, return false otherwise
         */
        return true;
    }

    private String[] getGroupNames(String username) {
        // Return the list of groups this user belongs to.
        return new String[0];
    }
}

更新

遗憾的是,结果发现还没有为ObjectDB提供JDBC驱动程序。不过,请随时提出建议!

提前感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-05 19:58:19

结果发现表示ObjectDB还没有JDBCDriver。我发现实现我自己的东西太多了,所以我只需要等待:)

票数 0
EN

Stack Overflow用户

发布于 2011-10-04 23:34:27

这不是一个直接的答案,但是有一个优秀的FlexibleJDBCRealm,它提供了一种替代与鱼一起提供的相当僵化的JDBCRealm。它是开源的,使代码适应ObjectDB应该比从头开始实现领域要容易得多。

票数 1
EN

Stack Overflow用户

发布于 2015-08-22 12:03:16

JDBC不是强制性的,因为您正在使用Objectdb。您可以在您的项目中创建一个无状态EJB,它可以访问您的ObjectDb实体来执行登录validation.The您的方法。

私有布尔身份验证(String,char[]密码)可以使用EJB执行凭据验证。这个示例对我来说很好。唯一要做的更改是将ObjectDb实体用于数据模型,作为改进,您可以将接口IUserAuthenticationService放在单独的jar中,以避免分发实现。

希望这能有所帮助。

Rn

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7655183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档