.NET LDAP 路径实用程序 (C#)
是否有用于 LDAP 路径操作的 .NET 库?
我想要有一些类似于 System.IO.Path 的东西,允许例如做类似的事情
string ou1 = LDAPPath.Combine("OU=users","DC=x,DC=y");
string ou2 = LDAPPath.Parent("CN=someone,OU=users,DC=x,DC=y");
否则,在 .NET 中处理 LDAP 可分辨名称的常见方法是什么?
为了澄清我的问题:我并不是一般性地询问“.NET 中的目录服务”;而是询问“.NET 中的目录服务”。我已经使用过它并完成了一些程序来执行一些任务。我觉得缺少的是操作路径、解析可分辨名称等的正确方法,并且由于这应该是一个非常常见的需求,所以我希望有一种比分割字符串更干净的方法来做到这一点在逗号 (1) 上。
(1) 例如,调用库中以逗号分隔字符串的函数
Is there a .NET library for LDAP paths manipulations?
I would like to have something equivalent to System.IO.Path
, allowing e.g. to do something like
string ou1 = LDAPPath.Combine("OU=users","DC=x,DC=y");
string ou2 = LDAPPath.Parent("CN=someone,OU=users,DC=x,DC=y");
Otherwise, what's the common way to deal with LDAP distinguished names in .NET?
To clarify my question: I'm not asking about "directory services in .NET" in general; I've already worked with that and done some programs to perform some tasks. What I feel is missing is a proper way to manipulate paths, parse distinguished names and so on, and since this should be a pretty common need, I hope there's a cleaner way to do this than split a string on commas(1).
(1) like, for example, calling a function in a library that splits the string on commas
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我使用了几个基于 Win32 方法 DsGetRdnW、DsQuoteRdnValueW 和 DsUnquoteRdnValueW 的实用程序类:
I use a couple of utility classes based off of the Win32 methods DsGetRdnW, DsQuoteRdnValueW, and DsUnquoteRdnValueW:
不,据我所知 - 即使在 Active Directory 的最新 .NET 3.5 命名空间中也没有。
您可以在目录本身中导航层次结构(转到父级等) - 但您需要通过
DirectoryEntry
绑定到例如Active Directory。然后还有
NameTranslate
API,但这实际上更像是一个“将此名称更改为另一个名称”,例如从用户主体名称更改为相对 DN - 同样,它需要连接到 AD 中的DirectoryEntry
。我最感兴趣的是找到这样一个库,但到目前为止,我还没有听说过一个库 - 无论是在 .NET 还是任何其他语言中,真的。
回到我的“繁重”AD 编程时代,我有自己的一套 LDAP 路径操作例程(在 Delphi 中)——基本上只是字符串解析和处理。
马克
No, not to my knowledge - not even in the most recent .NET 3.5 namespace for Active Directory.
You can navigate the hierarchy (going to the parent etc.) in the directory itself - but you need to be bound to e.g. Active Directory by means of a
DirectoryEntry
.And then there's the
NameTranslate
API, but that's really more of a "change this name to another name", e.g. change from user-principal name to relative DN - and again, it requires a connection to aDirectoryEntry
in AD.I would be most interested in finding such a library, but so far, I haven't heard about one - neither in .NET nor in any other language, really.
Back in my "heavy-duty" AD programming days, I had my own set of LDAP path manipulation routines (in Delphi) - basically just string parsing and handling.
Marc
虽然 .NET 中没有 LDAP 路径解析器,但有 URI 解析器。对于那些需要简单解析“LDAP://domain/...”路径的人,您可以使用 System.Uri 类,然后您可以获得如下所示的一些详细信息:
如果您使用 此 DN 解析器 您还可以执行以下操作解析路径:
虽然我同意 .NET 现在应该已经有了这个(遗憾!),但这至少是满足我需求的一个不错的解决方案,尽管并不完美,而且我怀疑它对每个人来说都足够强大。
While there is no LDAP path parser in .NET, there is a URI parser. For those who need to simply parse "LDAP://domain/..." paths you can use the
System.Uri
class, then you can get some details like the following:If you use this DN parser you can also do the following instead to parse the path:
While I agree that .NET should have had this by now (shame!), this was at least an ok work around for my needs, though not perfect, and I doubt it will be robust enough for everyone.