通过安全 LDAP 以编程方式创建 AD 帐户
Programatically creating an AD account through secure LDAP
目前我正在使用 PrincipalContext 通过 LDAP 连接通过 C# 成功创建 AD 帐户。我创建了一个新的 UserPrincipal,根据需要应用各种属性并调用 save()
基本上是这样的
using(var pc = new PrincipalContext(ContextType.Domain))
{
using(var up = new UserPrincipal(pc))
{
up.SamAccountName = "whatever";
up.EmailAddress = "test@example.com";
up.SetPassword(password);
up.Enabled = true;
up.Save();
}
}
一切正常,但现在我们需要通过安全的 LDAP 连接做同样的事情,我正在努力在网上找到任何关于如何做这个细节的信息。这让我觉得也许这与我目前的做法没有什么不同,相反我需要做的就是确保服务器支持 LDAPS 并配置为使用它。
也许 SO 是错误的论坛,如果是这样,我很乐意将问题移至其他论坛。
LDAP 的默认 TCP 端口是 389。如果您不另外说明,就会使用该端口。要使用 LDAPS,您必须指定 LDAPS 端口 636。例如:
using(var pc = new PrincipalContext(ContextType.Domain, "example.com:636"))
其中 example.com
是您的域名。
但是,使用 LDAPS 需要您的计算机信任服务器使用的 SSL 证书。有时会使用自签名证书,这会导致失败。 PrincipalContext
不报告证书错误。它报告它好像无法联系服务器。因此,如果您在那里遇到问题,可以使用此 PowerShell 脚本下载证书并进行检查:
$webRequest = [Net.WebRequest]::Create("https://example.com:636")
try { $webRequest.GetResponse() } catch {}
$cert = $webRequest.ServicePoint.Certificate
$bytes = $cert.Export([Security.Cryptography.X509Certificates.X509ContentType]::Cert)
set-content -value $bytes -encoding byte -path "certificate.cer"
将第一行更改为您的域名。如果可行,将有一个名为 certificate.cer
的文件,您可以双击并检查该文件。如果您的计算机不信任它,您会看到一条消息。如果这是一个问题,您可能只需要在您的计算机上将根证书作为 "Trusted Root Certificate" 安装。
目前我正在使用 PrincipalContext 通过 LDAP 连接通过 C# 成功创建 AD 帐户。我创建了一个新的 UserPrincipal,根据需要应用各种属性并调用 save()
基本上是这样的
using(var pc = new PrincipalContext(ContextType.Domain))
{
using(var up = new UserPrincipal(pc))
{
up.SamAccountName = "whatever";
up.EmailAddress = "test@example.com";
up.SetPassword(password);
up.Enabled = true;
up.Save();
}
}
一切正常,但现在我们需要通过安全的 LDAP 连接做同样的事情,我正在努力在网上找到任何关于如何做这个细节的信息。这让我觉得也许这与我目前的做法没有什么不同,相反我需要做的就是确保服务器支持 LDAPS 并配置为使用它。
也许 SO 是错误的论坛,如果是这样,我很乐意将问题移至其他论坛。
LDAP 的默认 TCP 端口是 389。如果您不另外说明,就会使用该端口。要使用 LDAPS,您必须指定 LDAPS 端口 636。例如:
using(var pc = new PrincipalContext(ContextType.Domain, "example.com:636"))
其中 example.com
是您的域名。
但是,使用 LDAPS 需要您的计算机信任服务器使用的 SSL 证书。有时会使用自签名证书,这会导致失败。 PrincipalContext
不报告证书错误。它报告它好像无法联系服务器。因此,如果您在那里遇到问题,可以使用此 PowerShell 脚本下载证书并进行检查:
$webRequest = [Net.WebRequest]::Create("https://example.com:636")
try { $webRequest.GetResponse() } catch {}
$cert = $webRequest.ServicePoint.Certificate
$bytes = $cert.Export([Security.Cryptography.X509Certificates.X509ContentType]::Cert)
set-content -value $bytes -encoding byte -path "certificate.cer"
将第一行更改为您的域名。如果可行,将有一个名为 certificate.cer
的文件,您可以双击并检查该文件。如果您的计算机不信任它,您会看到一条消息。如果这是一个问题,您可能只需要在您的计算机上将根证书作为 "Trusted Root Certificate" 安装。