我正在将旧的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?它甚至可行吗?