【问题标题】:Bind to LDAP with other account and then search user with password in LDAP server用其他账户绑定到 LDAP,然后在 LDAP 服务器中用密码搜索用户
【发布时间】:2017-09-28 03:16:24
【问题描述】:

我有一个绑定 LDAP 连接的服务帐户,我正在使用 JAAS LdapLoginModule 来验证该帐户。一旦LDAP绑定成功,我需要搜索或验证或搜索其他普通用户的用户名和密码。

所以我应该如何处理,因为我没有找到任何带有用户密码的搜索查询,并且这个普通用户不允许 LDAP 绑定权限。我能够检索其中的所有组和用户,但我找不到密码。

【问题讨论】:

    标签: java ldap jaas


    【解决方案1】:

    LDAP 目录以“正常”方式将其用作身份验证提供程序,不允许任何用户读取密码属性以避免泄漏。

    通常的做法是只允许任何人对该属性进行身份验证,即:任何人都可以使用该属性来尝试绑定操作。

    所以有两种处理你的案子的方法:

    1. [不推荐]:修改访问权限以允许用户用于搜索读取密码属性(=> 造成可能的安全问题)
    2. 允许匿名连接只绑定密码属性

    编辑:在评论中回答问题:

    正如我之前所说,要比较和/或读取(如在协议的 LDAP 操作中)另一个用户的密码属性而不是您的主帐户,您必须允许主帐户执行此操作,但不建议这样做.

    如何允许,这取决于您使用的 LDAP 实现(即哪个目录:OpenLDAP、AD、ApacheDS 等)

    或者您允许每个人在目录上绑定,这是执行此操作的标准方式:

    • 用主密码绑定
    • 搜索尝试绑定的用户的DN
    • 重新绑定用户的DN和他提供的密码:
      • 绑定成功:密码正确
      • 绑定 KO:凭据无效

    【讨论】:

    • 我已经通过使用 JASS 登录成功地将用户与主帐户上的密码绑定,但现在我需要验证实际尝试登录 LDAP 服务器的用户的用户名和密码。有没有办法比较用户密码
    • @Shardendu 我用更多信息编辑了我的答案;)
    • 我们没有普通用户的绑定权限,所以如果我能够绑定普通用户,则无法通过 LDAP 绑定,而不是我认为不需要主用户绑定。有没有办法比较现有用户的密码和用户名
    • @Shardendu 正如我在回答中所说,根据您的目录,您可以授予您的主帐户读取和/或比较密码属性的权利。
    • @Shardendu we can give bind permission to only Master user for security purpose :关于这一点,我完全不同意。授予您的主帐户对所有密码的读取权限比授权任何人尝试绑定并且无法读取任何人的密码内容要危险得多
    【解决方案2】:

    你需要:

    1. 以具有搜索权限的管理员用户身份绑定到目录。
    2. 根据您拥有的任何唯一属性(例如,屏幕名称、电子邮件等)搜索用户。
    3. 尝试使用他提供的密码以该用户身份绑定。

    如果这一切都成功,那么用户属性和密码是正确的。如果没有,就没有。

    【讨论】:

    • 我只有主用户的绑定权限,其他普通用户没有绑定权限,我需要用用户名和密码验证所以有没有其他方法
    • 你做错了,或者是谁设置了 LDAP 服务器。这就是你应该这样做的方式。
    【解决方案3】:

    如果您只想在没有任何授权的情况下使用 JAAS 进行身份验证,那么在安全原则中不要使用完整的 DN,只需传递如下用户名即可。它将获得身份验证但未授权

    Hashtable<String, Object> env = new Hashtable<String, Object>();
            env.put(Context.PROVIDER_URL, providerUrl);
            env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
            env.put(Context.SECURITY_AUTHENTICATION, "simple");
            env.put(Context.SECURITY_PRINCIPAL, "admin");
            env.put(Context.SECURITY_CREDENTIALS, "passWord");
    

    像这样,如果你想要授权,那么还有其他方法

    【讨论】:

      猜你喜欢
      • 2011-08-19
      • 1970-01-01
      • 2014-12-11
      • 1970-01-01
      • 1970-01-01
      • 2014-09-22
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      相关资源
      最近更新 更多