Я хочу реализовать базовую аутентификацию HTTP для своих веб-служб, но также хочу использовать ObjectDB для хранения учетных данных. Есть какой-либо способ сделать это? Наверное, я нуждаюсь в особом царстве, а также, что кто-то уже делал это раньше, поэтому, если да, пожалуйста, поднимите руки. В противном случае, пожалуйста, помогите мне в реализации. Я уже проверил основы создания пользовательских царств. Возможно ли каким-то образом заставить его работать с JDBCRealm или, более непосредственно, можно создать ресурс JDBC в GlassFish, который использует сервер ObjectDB?Пользовательское Realm для ObjectDB, используя ObjectDB с базовой проверкой HTTP
То, что я сделал до сих пор является базой 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];
}
}
UPDATE
К сожалению it turned out, что нет драйвера JDBC для ObjectDB пока. Не стесняйтесь делать предложения, однако!
Заранее благодарен!