为什么我在为GlassFish Server创建自定义Realm时收到此异常?

时间:2018-01-29 15:38:38

标签: java java-ee glassfish

我正在为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)

0 个答案:

没有答案