我正在为 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);
似乎域是自动设置的。
在那种情况下,我怎样才能找出它使用的域?