以下是一个使用ASP.NET Core和Novell.Directory.Ldap.NETStandard库连接到Active Directory的代码示例:
首先,确保您的项目已经引用了Novell.Directory.Ldap.NETStandard库。您可以通过NuGet包管理器或使用dotnet命令行工具来安装该库。
在您的ASP.NET Core项目中,创建一个名为ActiveDirectoryService的类,用于处理与Active Directory的连接和查询。在该类中,添加以下代码:
using Novell.Directory.Ldap;
public class ActiveDirectoryService
{
private readonly string _adServer;
private readonly int _adPort;
private readonly string _adUsername;
private readonly string _adPassword;
public ActiveDirectoryService(string adServer, int adPort, string adUsername, string adPassword)
{
_adServer = adServer;
_adPort = adPort;
_adUsername = adUsername;
_adPassword = adPassword;
}
public void ConnectAndQueryActiveDirectory()
{
using (var connection = new LdapConnection())
{
connection.Connect(_adServer, _adPort);
connection.Bind(_adUsername, _adPassword);
// 查询Active Directory的示例代码
var searchBase = "DC=yourdomain,DC=com";
var searchFilter = "(objectClass=user)";
var searchScope = LdapConnection.SCOPE_SUB;
var attributesToReturn = null; // 返回所有属性
var searchRequest = new LdapSearchRequest(searchBase, searchFilter, searchScope, attributesToReturn);
var searchResponse = (LdapSearchResponse)connection.SendRequest(searchRequest);
foreach (LdapEntry entry in searchResponse.Entries)
{
// 处理查询结果的代码
var username = entry.GetAttribute("samaccountname").StringValue;
var email = entry.GetAttribute("mail").StringValue;
// 输出查询结果的示例代码
Console.WriteLine($"Username: {username}, Email: {email}");
}
}
}
}
[ApiController]
[Route("[controller]")]
public class ActiveDirectoryController : ControllerBase
{
private readonly ActiveDirectoryService _adService;
public ActiveDirectoryController(ActiveDirectoryService adService)
{
_adService = adService;
}
[HttpGet]
public IActionResult GetActiveDirectoryUsers()
{
_adService.ConnectAndQueryActiveDirectory();
return Ok();
}
}
services.AddSingleton(provider =>
{
// 从配置文件中读取Active Directory的连接参数
var adServer = Configuration["ActiveDirectory:Server"];
var adPort = Int32.Parse(Configuration["ActiveDirectory:Port"]);
var adUsername = Configuration["ActiveDirectory:Username"];
var adPassword = Configuration["ActiveDirectory:Password"];
return new ActiveDirectoryService(adServer, adPort, adUsername, adPassword);
});
"ActiveDirectory": {
"Server": "yourdomain.com",
"Port": 389,
"Username": "yourusername",
"Password": "yourpassword"
}
现在,您可以访问ActiveDirectoryController的GetActiveDirectoryUsers方法来连接和查询Active Directory。例如,使用浏览器访问http://localhost:5000/ActiveDirectory,您将看到查询结果输出在控制台中。
请注意,上述代码示例仅供参考,您可能需要根据您的具体需求进行适当的调整和修改。