2

我正在为 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);

似乎域是自动设置的。

在那种情况下,我怎样才能找出它使用的域?

4

1 回答 1

0

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

于 2013-08-16T08:45:50.703 回答