📜  PrincipalContext c# 示例 - C# (1)

📅  最后修改于: 2023-12-03 14:45:39.519000             🧑  作者: Mango

PrincipalContext c# 示例 - C#

在C#中,PrincipalContext是用于管理AD域的类,它提供了许多功能,如查找用户、验证凭据、创建用户等等。在本篇文章中,我们将学习如何使用PrincipalContext类来管理AD域。

创建PrincipalContext对象

要使用PrincipalContext类,首先需要创建一个PrincipalContext对象。以下是创建PrincipalContext对象的示例代码:

string domain = "domain.com";
string container = "DC=domain,DC=com";
PrincipalContext context = new PrincipalContext(ContextType.Domain, domain, container);
// ContextType.Domain表示这是一个域PrincipalContext,domain是域名,container是容器名称。
查找用户

以下是根据用户名查找用户的示例代码:

UserPrincipal user = UserPrincipal.FindByIdentity(context, "username");
if (user != null)
{
    // 找到用户
}
else
{
    // 用户不存在
}

如果要根据其他属性查找用户,可以使用以下代码:

PrincipalSearcher search = new PrincipalSearcher();
UserPrincipal user = new UserPrincipal(context);
user.Name = "userName";
search.QueryFilter = user;
foreach (var result in search.FindAll())
{
    // Do something with the result
}
验证凭据

以下是验证用户凭据的示例代码:

bool isValid = context.ValidateCredentials("username", "password");

如果验证通过,isValid将为true;否则为false。

创建用户

以下是创建用户的示例代码:

UserPrincipal user = new UserPrincipal(context);
user.GivenName = "FirstName";
user.Surname = "LastName";
user.DisplayName = "Displayed Name";
user.UserPrincipalName = "username@domain.com";
user.EmailAddress = "user@domain.com";
user.SetPassword("password");
user.Enabled = true;
user.ExpirePasswordNow();
user.Save();

注意,对于大多数属性,您可以通过Setter和Getter访问它们,如上面的示例所示。但是,对于密码(SetPassword)和密码过期(ExpirePasswordNow),您需要调用它们的方法。

总结

以上是PrincipalContext类的一些常见用法示例。PrincipalContext类提供了许多功能,使我们能够管理AD域中的用户和组。我们可以根据需要更改用户和组的属性,创建用户,以及验证用户凭据等等。