我正在为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);
似乎域名是自动设置的。
在这种情况下,我如何找到它使用的域名?
答案 0 :(得分:0)
您始终可以从UserPrincipal.FindByIdentity()返回的用户主体中获取使用的域