【问题标题】:Authenticate credentials with LDAP for specific requests使用 LDAP 验证特定请求的凭据
【发布时间】:2012-11-19 07:52:38
【问题描述】:

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

问题出现在这里:登录后,我有一个场景要求用户在执行特定操作时提供用户名和密码(我还将使用 LDAP 服务器进行身份验证)。我希望能够重用用于验证用户进入 Web 应用程序的相同机制。

我登录应用程序的表单发布到j_security_check,所以按照这个,我试图向j_security_check 发送请求,但JBOSS 返回一个404。从阅读了一下,我收集了@ 987654325@ 不能被任意请求访问,必须响应对安全资源的质询请求。

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

编辑:

为了澄清,问题是如何将用户的凭据输入发送到 LDAP 服务器进行身份验证。从用户那里获取输入等等都完成了。剩下的就是接受这个输入并将其发送到 LDAP 服务器并获得响应(这是我卡住的地方)。

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

【问题讨论】:

  • 我不清楚你的问题是什么。您是在问如何使用不同的凭据向 LDAP 进行身份验证,或者如何将这些凭据从用户获取到 Web 应用程序?
  • @EJP 第一个:如何使用用户的凭据向 LDAP 进行身份验证。我得到了用户的输入,我可以将它们发送到任何地方。我只是不确定如何将用户的输入发送到 LDAP 服务器进行身份验证/验证。

标签: java authentication web-applications jboss ldap


【解决方案1】:

【讨论】:

    【解决方案2】:

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

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

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

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

    boolean userIsInRole = servletRequest.isUserInRole("nameOfGroup")
    

    【讨论】:

      【解决方案3】:

      想为 JBoss 6.2+ 添加另一个答案,其中 WebAuthentication 不再存在。 我使用LoginContext 的创建来实现相同的结果:

      String SECURITY_DOMAIN_NAME = "ssd"; // the security domain's name from standalone.xml
      
      String username = "user";
      String password = "password";
      
      LoginContext lc = null;
      try {
          lc = new LoginContext(SECURITY_DOMAIN_NAME, new UsernamePasswordHandler(username, password.toCharArray()));
          lc.login();
          // successful login
      } catch (LoginException loginException) {
          // failed login
      }
      

      并且使用uflc.getSubject().getPrincipals()来验证角色。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多