我是LDAP API的新手 . 我能够连接到LDAP服务器并搜索用户 . 如何使用 UnboundID LDAP API 使用电子邮件/密码对用户进行身份验证?
我没有在LDAP中看到任何使用电子邮件和密码验证用户的身份验证?
是否可以使用电子邮件和密码验证用户身份
我正在做什么来验证用户,如下所示
在USERS目录下搜索并匹配电子邮件并查找他的DN
基于DN连接用户,如果连接成功,则在连接中进行用户或执行验证,则用户未经过身份验证
有没有正确的方法来验证用户?
使用UnboundID LDAP SDK,这段简单的代码搜索条目 . 如果有 one 条目具有已知的电子邮件地址,则BIND使用该DN(密码必须来自其他地方) . 没有任何反应(经过身份验证是 false )是否有更多的条目与搜索参数匹配,或者没有条目与搜索参数匹配 . 此代码假定baseObject为dc = example,dc = com,需要子树搜索,并且具有电子邮件地址的属性具有别名邮件 . 该代码还假设有一个bindDN和bindPassword,它具有足够的访问权限来搜索具有该电子邮件地址的用户 . 它搜索的电子邮件地址假定为babs.jensen@example.com .
false
整个过程都忽略了例外情况 .
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 }
你必须做两个步骤 .
使用管理登录,在该目录中搜索该用户 .
使用该用户的DN和他提供的密码,尝试绑定 .
如果其中一个未成功,则身份或密码不正确 .
2 回答
使用UnboundID LDAP SDK,这段简单的代码搜索条目 . 如果有 one 条目具有已知的电子邮件地址,则BIND使用该DN(密码必须来自其他地方) . 没有任何反应(经过身份验证是
false
)是否有更多的条目与搜索参数匹配,或者没有条目与搜索参数匹配 . 此代码假定baseObject为dc = example,dc = com,需要子树搜索,并且具有电子邮件地址的属性具有别名邮件 . 该代码还假设有一个bindDN和bindPassword,它具有足够的访问权限来搜索具有该电子邮件地址的用户 . 它搜索的电子邮件地址假定为babs.jensen@example.com .整个过程都忽略了例外情况 .
你必须做两个步骤 .
使用管理登录,在该目录中搜索该用户 .
使用该用户的DN和他提供的密码,尝试绑定 .
如果其中一个未成功,则身份或密码不正确 .