如何使用用户名和密码连接LDAP?

索拉布

我让我的 Ldap 工作,我面临的唯一问题是当我尝试使用电子邮件登录时,这是我在下面代码中的 else 部分登录时。如果我的用户名与电子邮件不同,则会引发错误。即如果我的电子邮件是“[email protected]”并且我的用户名是“saurakum”,那么它将通过无效的用户名密码错误。在内部,我使用用户名来制作电子邮件,即如果用户使用名称“karan”登录,那么我希望电子邮件是 karan @gmail.com,这在许多情况下都不是真的,并且身份验证失败。我正在寻找一些解决方案,其中我可以通过电子邮件或用户名登录,我将能够对用户进行身份验证。下面是我的代码片段。请建议?

    ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, initialContextFactory);
    ldapEnv.put(Context.PROVIDER_URL, url);
    ldapEnv.remove(Context.SECURITY_PROTOCOL);
    if (email == null) {
        lContext = new InitialLdapContext(ldapEnv, null);
        entryResult = searchUserEntry(lContext, user, searchCtrls);
        final String usrDN = ((Context) entryResult.getObject()).getNameInNamespace();

        lContext.addToEnvironment(Context.SECURITY_AUTHENTICATION, "simple");
        lContext.addToEnvironment(Context.SECURITY_PRINCIPAL, usrDN);
        lContext.addToEnvironment(Context.SECURITY_CREDENTIALS, pass);
        lContext.reconnect(null);
    } else {
            ldapEnv.put(Context.SECURITY_PRINCIPAL, email);
            ldapEnv.put(Context.SECURITY_CREDENTIALS, credentials);
            lContext = new InitialLdapContext(ldapEnv, null);
            return lContext;
        searchUserEntry(lContext, user, searchCtrls);
    }
用户207421

通常这是一个 3 步过程:

  1. 作为管理用户绑定到 LDAP。请注意,这不应该是配置文件中定义的主用户:这是供 OpenLDAP 使用的。相反,它应该是 DIT 中提到的对下一步具有适当搜索访问权限的用户。

  2. 通过一些独特的属性搜索用户,例如在您的案例电子邮件中。

  3. 使用找到的用户 DN 和他指定的密码,尝试绑定为该用户(使用该reconnect()方法,在适当更改上下文环境后)。

如果所有这些都成功,则您登录成功。如果 (2) 或 (3) 失败,你就失败了,注意你不应该告诉用户它是哪个:否则你正在向攻击者泄露信息。您不应提及是用户名(电子邮件)还是密码错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用用户名和密码保护MongoDB

如何使用用户名和密码连接Java中的MongoDB 3.2?

如何在PowerShell控制台中使用用户名和密码使用wget

无需用户名和密码即可使用Java连接到LDAP Active Directory

如何使用用户名和密码对Kubernetes kubectl进行身份验证?

如何使用Java在SOAP UI中使用用户名和密码发送SOAP请求

如何在Java客户端中使用用户名和密码(无SSL)连接到Elasticsearch?

使用用户名和密码访问Kubernetes API

如何配置MongoDB以使用用户名和密码进行连接?

sqlite连接使用用户名和密码

使用用户名和密码的OpenVPN

使用用户名和密码进行密钥验证

Python Click模块,如何使用用户名和密码作为参数

使用用户名和密码的Python github Pull

Flutter和Firebase-如何仅使用用户名和密码登录

使用用户名和密码输入的JOptionPane

使用用户名和密码打开HTTP会话

使用用户名和密码打开的网址

如何使用用户名和密码保护纯文本凭证文件?

如何使用用户名和密码访问Active Directory上的用户文件夹?

如何在终端的一行中使用用户名和密码运行openconnect?

使用用户名和密码连接到openvpn

如何使用用户名和密码连接 mongodb(mongoose)?

Python 使用用户名、密码和 API 密钥连接到 API

如何使用用户名密码连接 coreNLP 服务器?

如何仅使用用户名和密码使用 python 访问 Microsoft One Drive

如何在Axios中使用用户名和密码访问数据库

如何创建登录但使用用户名或电子邮件和密码

python paho mqtt无法使用用户名和密码连接到mqtts