获取PrincipalContext选择的域

时间:2013-08-16 08:18:46

标签: c# asp.net login active-directory

我正在为asp.net创建一个自定义登录功能,它可以验证活动目录。用户必须能够仅使用其用户名或用户名和域名(以及两种情况下的密码)登录。

代码:

AuthUser user = Authentication.getDomainAndUserName(givenUsername);

bool validAccount = false;

PrincipalContext network = null;
if (user.domain != "") network = new PrincipalContext(ContextType.Domain, user.domain);
else network = new PrincipalContext(ContextType.Domain);

if (UserPrincipal.FindByIdentity(network, IdentityType.SamAccountName, user.username) != null) {
      validAccount = network.ValidateCredentials(givenUsername, givenPassword, ContextOptions.Negotiate);
}

“AuthUser”包含用户名,如果给出,则包含域名。现在,如果用户没有明确指定域,则上面的工作仍然正常。

所以如果你打电话

new PrincipalContext(ContextType.Domain);

似乎域名是自动设置的。

在这种情况下,我如何找到它使用的域名?

1 个答案:

答案 0 :(得分:0)

您始终可以从UserPrincipal.FindByIdentity()返回的用户主体中获取使用的域