Glassfish 4中的自定义域:未找到登录模块

Glassfish 4中的自定义域:未找到登录模块,glassfish,jaas,glassfish-4,java-ee-7,Glassfish,Jaas,Glassfish 4,Java Ee 7,我正在尝试为Glassfish 4创建一个自定义域和登录模块 我遵循了《玻璃鱼》第4页中概述的程序。4-6,“创建自定义领域” 我还遵循了中的步骤 我创建了一个loginModule,它扩展了com.sun.appserv.security.AppservPasswordLoginModule 我创建了一个扩展com.sun.appserv.security.AppservRealm的领域(SaltRealm) 我编译成一个jar,并将jar放在glassfish4\glassfish\doma

我正在尝试为Glassfish 4创建一个自定义域和登录模块

我遵循了《玻璃鱼》第4页中概述的程序。4-6,“创建自定义领域”

我还遵循了中的步骤

我创建了一个loginModule,它扩展了com.sun.appserv.security.AppservPasswordLoginModule

我创建了一个扩展com.sun.appserv.security.AppservRealm的领域(SaltRealm)

我编译成一个jar,并将jar放在glassfish4\glassfish\domains\domain1\lib中

我将其添加到\glassfish4\glassfish\domains\domain1\config\login.conf:

saltRealm {
   com.example.LoginModule required;
};
我添加到\glassfish4\glassfish\domains\domain1\config\domain.xml:

   <auth-realm classname="com.example.SaltRealm" name="saltRealm">
      <property name="jaas-context" value="saltRealm"></property>
    </auth-realm>

我在web.xml中添加了一个部分来使用saltRealm

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>saltRealm</realm-name>
    <form-login-config>
        <form-login-page>/login.xhtml</form-login-page>
        <form-error-page>/error.xhtml</form-error-page>
    </form-login-config>
</login-config>

形式
盐田
/login.xhtml
/error.xhtml
看起来找到了saltRealm类(我可以看出构造函数正在运行)

但是,似乎找不到登录模块。我得到这个警告:

WEB9102:Web登录失败:com.sun.enterprise.security.auth.Login.common.Login异常:登录失败:无效的空输入:名称


我不确定我在这里遗漏了什么。

您发布的片段似乎是正确的。要调试您的问题,您可以在调试模式下启动Glassfish,并在登录模块中设置断点

作为替代方案,在glassfish控制台中启用领域的详细登录:

Configurations - server-config - Logger Settings - Log Levels - javax.enterprise.system.core.security

我也有类似的问题,遵循非常相似的指示,直到一些研究发现了一个缺失的部分

您应该确保您正在覆盖IASREARM中的getJAASContext()。这不是一个抽象方法,但您需要重写它,因为返回值用于将领域映射到登录模块。因此getJAASContext()应该返回您在login.conf中使用的领域的名称

在您的情况下,这将是:

@Override
public String getJAASContext(){
    return "saltRealm";
}