0

我首先想说的是,不幸的是,我无法在这种特定情况下更改代码,并且除了这个安装之外,代码在任何地方都可以使用。我怀疑存在配置/权限/信任问题,我希望获得有关如何修改环境以解决此问题的建议。

在这个特定的地方,在运行Search()方法 on之后LdapConnection,我得到一个由于某种原因LdapSearchQueue不包含的内容。LdapSearchResult请注意,它LdapSearchQueue确实包含其他消息(特别是LdapSearchResultReferenceand LdapResponse),而不是LdapSearchResult. 我可以手动检查 AD 并查看理论上它应该有正确的响应。

显然,它以entry存在结束null

var filter = $"(&(objectClass=User)(sAMAccountName={<user_name>}))";
var searchBase = "DC=<domain_name>,DC=com";
var search = conn.Search(searchBase, LdapConnection.SCOPE_SUB, filter, null, false, null, null);
    LdapMessage message;
    LdapEntry entry = null;
    while ((message = search.getResponse()) != null)
    {
         if (!(message is LdapSearchResult searchResultMessage))
         {
              continue;
         }
         entry = searchResultMessage.Entry;
    }

任何建议表示赞赏

4

1 回答 1

0

在这种特定情况下,UPN 和 sAMAccountName 属性是不同的(几年前迁移的结果),而通常它们具有相同的值。UPN 是在客户端应用程序上提供的,用于成功进行身份验证(对于 UPN),但是对 sAMAccountName 使用相同的值会返回错误。

于 2020-11-30T21:45:28.690 回答