基于Servlet的登录可以像JAAS一样配置吗?可以使用自定义CallbackHandler吗?

时间:2017-10-14 23:32:29

标签: security java-ee wildfly servlet-3.0 jaas

我正在将旧的JEE5 / servlet 2.4应用程序迁移到JEE 7 / servlet 3.1。该应用程序将在Jboss EAP7 / Wildfly 10上运行。

目前,该应用程序已设计/配置为使用JAAS。它有一个自定义的LoginModule,它在authentication / login-module部分下的standalone.xml文件中配置。

            <security-domain name="customWeb" cache-type="default">
                <authentication>
                    <login-module code="security.jboss.CustomLoginModule" flag="required">
                        <module-option name="unauthenticatedIdentity" value="nobody"/>
                    </login-module>
                </authentication>
            </security-domain>

我的servlet上下文(web.xml)配置为使用基于表单的身份验证:

   <login-config>
      <auth-method>FORM</auth-method>
      <form-login-config>
         <form-login-page>/login.do</form-login-page>
         <form-error-page>/login.do?error=true</form-error-page>
      </form-login-config>
   </login-config>

在我的登录操作代码中,我可以使用

触发它
LoginContext lc = new LoginContext("module", new MyCallbackHandler( arg0, arg1, arg2 ));
lc.login();

在我的CustomLoginModule中,我可以指定我的处理程序知道/理解如何处理的自定义回调。

但Servlet 3规范引入了一种新方法request.login (username, password)。如果我尝试调用request.login( usr, pwd),我会看到Wildfly最终调用我的CustomLoginModule,但没有我的自定义CallbackHandler。

有没有办法使用这种方法呢?如何配置Wildfly,以便在使用servlet登录方法时仍然可以传递自定义CallbackHandler?它甚至可行吗?

0 个答案:

没有答案