我想为我的web服务实现,但我也希望使用ObjectDB来存储凭据。有办法这样做吗?我想我需要一个定制的领域,而且,有人已经这样做过,所以如果是,请举手。否则,请帮助我的实现。我已经检查了制作自定义领域的基本知识。是否可以以某种方式使其与JDBCRealm一起工作,或者更直接地说,是否有可能在GlassFish中创建一个使用ObjectDB服务器的JDBC资源?
到目前为止,我所做的是Realm的基础
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
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驱动程序。不过,请随时提出建议!
提前感谢!
发布于 2011-11-05 19:58:19
结果发现表示ObjectDB还没有JDBCDriver。我发现实现我自己的东西太多了,所以我只需要等待:)
发布于 2011-10-04 23:34:27
这不是一个直接的答案,但是有一个优秀的FlexibleJDBCRealm,它提供了一种替代与鱼一起提供的相当僵化的JDBCRealm。它是开源的,使代码适应ObjectDB应该比从头开始实现领域要容易得多。
发布于 2015-08-22 12:03:16
JDBC不是强制性的,因为您正在使用Objectdb。您可以在您的项目中创建一个无状态EJB,它可以访问您的ObjectDb实体来执行登录validation.The您的方法。
私有布尔身份验证(String,char[]密码)可以使用EJB执行凭据验证。这个示例对我来说很好。唯一要做的更改是将ObjectDb实体用于数据模型,作为改进,您可以将接口IUserAuthenticationService放在单独的jar中,以避免分发实现。
希望这能有所帮助。
Rn
https://stackoverflow.com/questions/7655183
复制相似问题