LDAP 路径问题
我正在使用 LDAP,对此我是新手。
当您只知道用户名、密码、服务器名时,有没有办法获取域
我正在尝试执行此操作:
string ldapPath = "LDAP://serverName";
string uid = username;
string password = pwd;
string qry = String.Format("(uid={0})", uid);
string adsPath = String.Empty;
try
{
DirectoryEntry nRoot = new DirectoryEntry(ldapPath, null, null, AuthenticationTypes.Anonymous);
DirectorySearcher ds = new DirectorySearcher(nRoot, qry);
SearchResult sr = ds.FindOne();
if (sr != null)
{
// we want to retrieve the DN like this: "uid=myuser,ou=People,dc=findlay,dc=edu
ldapPath = sr.Path; //update where we will bind next
}
“任何帮助”,否则这不起作用
string ldapPath = "LDAP://serverName";
除非我更改为
string ldapPath = "LDAP://serverName/DC=mydomain,DC=com";
..?
谢谢
编辑 rootDSE
string defaultNamingContext;
using (DirectoryEntry rootDSE = new DirectoryEntry("LDAP://serverName/rootDSE", null, null, AuthenticationTypes.Anonymous))
{
defaultNamingContext = rootDSE.Properties["rootDomainNamingContext"].Value.ToString();
}
我也觉得这是解决方案,但它目前对我不起作用..请帮助!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
RootDSE
不是服务器绑定的 - 试试这个:或者如果您使用的是 .NET 3.5 及更高版本,您可以使用
PrincipalContext
代替,它可以在没有任何路径的情况下构造 -它只会选择您连接到的默认域:您应该查看 System.DirectoryServices.AccountManagement (S.DS.AM) 命名空间。 在这里阅读所有相关内容(即 .NET 3.5 及更高版本):
RootDSE
is not server-bound - try this:Or if you're on .NET 3.5 and newer, you could use
PrincipalContext
instead, which can be constructed without any path - it will just pick up the default domain you're connected to:You should check out the
System.DirectoryServices.AccountManagement
(S.DS.AM) namespace. Read all about it here (that's .NET 3.5 and newer):如果:
有效,您尝试一下(不匿名):
或者
它对我有效,来自不在域中的计算机。
If :
works, have you try (without being anonymous):
or
It works for me, from a computer not in the domain.
你可以这样尝试
// 方法调用
// 方法调用
// 方法定义
请查看此链接 了解更多信息
you can try like this
// Method call
// Method call
// Method Definition
pls take a look at this link for more info
您应该能够通过调用 RootDse 来获取域。
You should be able to get the domain by just calling RootDse.