1

当我在 UserPrincipal 类上写出 DistinguishedName 属性时得到了这些信息。

CN=Test Testie, OU=123,OU=Company,OU=Accounts,DC=myServer,DC=local

如果有从 OU 获得 nr 123 的属性,我会很伤心。是否有任何其他属性可以获得该信息,或者这是过滤掉我的信息的最佳方式?

4

2 回答 2

2

\不。没有“父”属性。

根目录下的每个对象都有一个父对象,或者是容器 (CN=) 上的组织单位 (OU=)。因此,只需解析前两个逗号之间的内容并删除 OU= 和 CN=。这样你就有了 Name 属性。

请注意,名称中可能包含逗号的对象。然后它看起来像这样:

伟大的OU,

CN=Test Testie,OU=Great OU\,The,OU=Company,OU=Accounts,DC=myServer,DC=local

测试,测试

CN=Testie\,Test ,OU=123,The,OU=Company,OU=Accounts,DC=myServer,DC=local

所以你需要在解析之前检查一个反斜杠!如果找到,则需要在第一个和第三个逗号之间进行解析。

是有关专有名称中“特殊”字符的链接。

于 2013-04-19T16:18:41.053 回答
0

好的,它正在工作,但感觉不是这样做的最佳实践:

        var ctx = new PrincipalContext(ContextType.Domain, "myDomain.local");
        var user = UserPrincipal.FindByIdentity(ctx, "myUser");
        var auth = user.GetAuthorizationGroups().Any(x => x.Name.Contains("myGroup"));

因为事情是我需要使用 contains 因为该组可能如下所示:

myGroup.xxxx.111

有没有更好的方法来解决这个问题?

于 2013-04-26T07:33:36.510 回答