我已经使用 AD 建立了一个开发服务器,我正在尝试弄清楚如何通过.NET连接到它。我正在安装 AD 的同一台机器上工作。我从 AD 获得了 DC 名称和机器名称,但连接不起作用。我使用的凭据与连接服务器时使用的凭据相同。
有什么建议么?
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://[dc.computername.com]", "administrator", "[adminpwd]");
我已经使用 AD 建立了一个开发服务器,我正在尝试弄清楚如何通过.NET连接到它。我正在安装 AD 的同一台机器上工作。我从 AD 获得了 DC 名称和机器名称,但连接不起作用。我使用的凭据与连接服务器时使用的凭据相同。
有什么建议么?
DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://[dc.computername.com]", "administrator", "[adminpwd]");
尝试这样的事情,使用System.DirectoryServices.Protocols
命名空间:
//Define your connection
LdapConnection ldapConnection = new LdapConnection("123.456.789.10:389");
try
{
//Authenticate the username and password
using (ldapConnection)
{
//Pass in the network creds, and the domain.
var networkCredential = new NetworkCredential(Username, Password, Domain);
//Since we're using unsecured port 389, set to false. If using port 636 over SSL, set this to true.
ldapConnection.SessionOptions.SecureSocketLayer = false;
ldapConnection.SessionOptions.VerifyServerCertificate += delegate { return true; };
//To force NTLM\Kerberos use AuthType.Negotiate, for non-TLS and unsecured, use AuthType.Basic
ldapConnection.AuthType = AuthType.Basic;
ldapConnection.Bind(networkCredential);
}
catch (LdapException ldapException)
{
//Authentication failed, exception will dictate why
}
}
你能连接到RootDSE
容器吗?
DirectoryEntry rootDSE = new DirectoryEntry("LDAP://RootDSE", "administrator", "[adminpwd]");
如果可行,那么您可以读出存储在该根容器中的一些属性
if (rootDSE != null)
{
Console.WriteLine("RootDSE Properties:\n\n");
foreach (string propName in rootDSE.Properties.PropertyNames)
{
Console.WriteLine("{0:-20d}: {1}", propName, rootDSE.Properties[propName][0]);
}
}
这将向您显示有关安装中存在哪些 LDAP 路径的一些信息。