我有一个使用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")