我首先要说的是,不幸的是,在这种特定情况下,我无法更改代码,并且除了此安装之外,该代码在任何地方都可以使用。我怀疑配置/权限/信任问题,希望能够获得有关如何修改环境以解决此问题的建议。
在这个特定的位置,在上运行Search()
方法之后LdapConnection
,由于某种原因,我得到了一个LdapSearchQueue
不包含LdapSearchResult
的。请注意,LdapSearchQueue
它确实包含其他消息(特别是LdapSearchResultReference
和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;
}
任何建议表示赞赏
在这种特定情况下,UPN和sAMAccountName属性是不同的(从数年前的移植结果),而通常它们具有相同的值。UPN是在客户端应用程序上提供的,用于成功进行身份验证(用于UPN),但是对sAMAccountName使用相同的值将返回错误。