我正在为GlassFish Server创建自定义登录模块。这是因为我需要使用Web服务进行身份验证。
我已将GlassFish_Server\glassfish\modules
文件夹中的两个JAR添加到自定义登录模块类路径中。
这是CustomLoginModule
类:
package loginmodule;
import com.sun.appserv.security.AppservPasswordLoginModule;
import javax.security.auth.login.LoginException;
public class CustomLoginModule extends AppservPasswordLoginModule {
@Override
protected void authenticateUser() throws LoginException {
String[] roles = {"admin"};
commitUserAuthentication(roles);
}
}
这是CustomReal
类:
package loginmodule.loginmodule;
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.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;
public class CustomRealm extends AppservRealm {
/** JAAS Context parameter name */
public static final String PARAM_JAAS_CONTEXT = "jaas-context";
public static final String AUTH_TPYE = "Authentication done by checking user at table USERS on database";
@Override
public void init(Properties properties) throws BadRealmException, NoSuchRealmException
{
String propJaasContext = properties.getProperty(PARAM_JAAS_CONTEXT);
if (propJaasContext != null) setProperty(PARAM_JAAS_CONTEXT, propJaasContext);
}
@Override
public String getAuthType()
{
return AUTH_TPYE;
}
@Override
public Enumeration<?> getGroupNames(String usid) throws InvalidOperationException, NoSuchUserException
{
return Collections.enumeration(getGroups());
}
public static List<String> getGroups() {
List<String> s = new ArrayList<>();
s.add("admin");
return s;
}
}
正如您所看到的,这两个类没有复杂的登录来执行实际的登录过程......
... 但问题是我在GlassFish Server控制台中执行验证以添加从自定义登录项目生成的实际JAR。这是GlassFish中出现的错误消息:
发生了错误 创建Authrealm CustomRealm失败了。 java.lang.ClassCastException:loginmodule.CustomLoginModule无法强制转换为com.sun.enterprise.security.auth.realm.Realm java.lang.ClassCastException:loginmodule.CustomLoginModule无法强制转换为com.sun.enterprise.security.auth.realm .Realm
针对此问题的任何帮助,建议等?
其他详情:
GlassFish Server开源版4.0(版本89)