如何使用用户名和密码连接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

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

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

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

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

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

sqlite连接使用用户名和密码

使用用户名和密码的OpenVPN

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

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

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

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

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

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

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

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

如何允许客户端使用用户名和密码登录Samba共享?

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

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

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

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

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

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

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

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

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

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