首页 文章

使用电子邮件和密码在LDAP中验证用户

提问于
浏览
0

我是LDAP API的新手 . 我能够连接到LDAP服务器并搜索用户 . 如何使用 UnboundID LDAP API 使用电子邮件/密码对用户进行身份验证?

我没有在LDAP中看到任何使用电子邮件和密码验证用户的身份验证?

是否可以使用电子邮件和密码验证用户身份

我正在做什么来验证用户,如下所示

  • 在USERS目录下搜索并匹配电子邮件并查找他的DN

  • 基于DN连接用户,如果连接成功,则在连接中进行用户或执行验证,则用户未经过身份验证

有没有正确的方法来验证用户?

2 回答

  • 1

    使用UnboundID LDAP SDK,这段简单的代码搜索条目 . 如果有 one 条目具有已知的电子邮件地址,则BIND使用该DN(密码必须来自其他地方) . 没有任何反应(经过身份验证是 false )是否有更多的条目与搜索参数匹配,或者没有条目与搜索参数匹配 . 此代码假定baseObject为dc = example,dc = com,需要子树搜索,并且具有电子邮件地址的属性具有别名邮件 . 该代码还假设有一个bindDN和bindPassword,它具有足够的访问权限来搜索具有该电子邮件地址的用户 . 它搜索的电子邮件地址假定为babs.jensen@example.com .

    整个过程都忽略了例外情况 .

    String baseObject = "dc=example,dc=com";
    String bindDN = "dn-with-permission-to-search";
    String bindPassword = "password-of-dn-with-permission-to-search";
    
    // Exceptions ignored.
    LDAPConnection ldapConnection = 
      new LDAPConnection(hostname,port,bindDN,bindPassword);
    
    String emailAddress = "babs.jensen@example.com";
    String filterText = String.format("mail=%s",emailAddress);
    SearchRequest searchRequest = new SearchRequest(baseObject,
      SearchScope.SUB,filterText,"1.1");
    SearchResult searchResult = ldapConnection.search(searchRequest);
    
    boolean authenticated = false;
    if(searchResult.getEntryCount() == 1)
    {
        // There is one entry with that email address
        SearchResultEntry entry = searchResult.getSearchEntries().get(0);
    
        // Create a BIND request to authenticate. The password has
        // has to come from someplace outside this code
        BindRequest bindRequest =
           new SimpleBindRequest(entry.getDN(),password);
        ldapConnection.bind(bindRequest);
        authenticated = true;
    }
    else if(searchResult.getEntryCount() > 1)
    {
        // more than one entry matches the search parameters
    }
    else if(searchResult.getEntryCount() == 0)
    {
        // no entries matched the search parameters
    }
    
  • 0

    你必须做两个步骤 .

    • 使用管理登录,在该目录中搜索该用户 .

    • 使用该用户的DN和他提供的密码,尝试绑定 .

    如果其中一个未成功,则身份或密码不正确 .

相关问题