当我在 UserPrincipal 类上写出 DistinguishedName 属性时得到了这些信息。
CN=Test Testie, OU=123,OU=Company,OU=Accounts,DC=myServer,DC=local
如果有从 OU 获得 nr 123 的属性,我会很伤心。是否有任何其他属性可以获得该信息,或者这是过滤掉我的信息的最佳方式?
当我在 UserPrincipal 类上写出 DistinguishedName 属性时得到了这些信息。
CN=Test Testie, OU=123,OU=Company,OU=Accounts,DC=myServer,DC=local
如果有从 OU 获得 nr 123 的属性,我会很伤心。是否有任何其他属性可以获得该信息,或者这是过滤掉我的信息的最佳方式?
\不。没有“父”属性。
根目录下的每个对象都有一个父对象,或者是容器 (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
所以你需要在解析之前检查一个反斜杠!如果找到,则需要在第一个和第三个逗号之间进行解析。
这是有关专有名称中“特殊”字符的链接。
好的,它正在工作,但感觉不是这样做的最佳实践:
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
有没有更好的方法来解决这个问题?