我有一个使用JBoss 5.2部署的Web应用程序。为了使用户能够使用该应用程序,他/她必须使用用户名和密码通过LDAP服务器进行身份验证(使用简单身份验证)。通过为JBoss设置login-config.xml并为我们的实现提供<login-module>可以完成所有这些操作。

问题来了:登录后,我遇到一种情况,要求用户在执行特定操作时提供用户名和密码(我还将使用LDAP服务器进行身份验证)。我希望能够重用与用于向Web应用程序验证用户身份相同的机制。

我的表单登录到应用程序后发布到j_security_check,因此,按照这种方式,我试图向j_security_check发送请求,但JBOSS返回了404。经过一番阅读,我发现j_security_check无法可以由任何任意请求访问,并且必须响应对安全资源的质询。

那么,如何验证用户使用同一LDAP服务器提供的第二组凭据?

编辑:

为了澄清,问题是如何将用户的凭据输入发送到LDAP服务器进行身份验证。抓取用户等的输入已完成。剩下的就是接受此输入并将其发送到LDAP服务器并获得响应(这就是我遇到的问题)。

如果有帮助的话,登录到Web应用程序将使用扩展UsernamePasswordLoginModule的自定义类。

最佳答案

因此,经过大量研究,我最终找到了JBoss环境的解决方案(这是我正在使用的解决方案)。

捕获用户的凭据后,便可以通过POST / GET将其发送到服务器,并且服务器可以执行以下操作,以使用您已配置的任何身份验证策略(在login-config.xml中)来验证凭据:

WebAuthentication webAuthentication = new WebAuthentication();
boolean success = webAuthentication.login(username, password);


为了对此进行扩展,我还能够通过HttpServletRequest(将其传递到服务器端处理程序中)检查用户的角色/组:

boolean userIsInRole = servletRequest.isUserInRole("nameOfGroup")

07-28 02:08
查看更多