为什么我可以使用“ new DirectoryEntry(guid)”而不是Principled.FindByIdentity查找OU?

时间:2018-07-23 16:48:52

标签: c# asp.net-core active-directory

我正在尝试使用.NET Core 2.1中的DirectoryServices.AccountManagement来查找我们商店位置的用户帐户。

如果我只是使用OU的引导来更新DirectoryEntry,它将毫无问题地拉回条目。但是,一旦我尝试使用AccountManagement主体,它总是为商店的用户帐户返回null。

每个商店位置也都有一个通讯组,我可以使用Principal.FindByIdentity来查找那些,而不是商店的实际用户帐户。

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, _domainName, _username, _password)) 
{
    // returns null
    var testOU = Principal.FindByIdentity(pc, IdentityType.Guid, store.ActiveDirectoryOU.ToString());

    // returns proper DirectoryEntry for store's User Account
    var testEntry = new DirectoryEntry("LDAP://<GUID=" + store.ActiveDirectoryOU + ">");

    // returns proper Principal for store's distribution group
    var testGroup = Principal.FindByIdentity(pc, store.ActiveDirectoryGroup.ToString());
}

是否存在某种设置可以防止某些用户帐户对DirectoryServices.AccountManagement可见?还是我犯了一些新错误?

1 个答案:

答案 0 :(得分:0)

您正在使用Principal.FindByIdentity而不是UserPrincipal.FindByIdentity来获取特定用户。可能是这个问题吗?

请参见this example

See also >