Получить домен, выбранный PrincipalContext


Я создаю пользовательский функционал входа для asp.net который проверяет с помощью active directory. Пользователь должен иметь возможность войти только под своим именем пользователя или с его именем пользователя и доменом (и паролем в обоих случаях).

Код:

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 2

1 ответ:

Вы всегда можете получить используемый домен от пользователя principal, возвращенного из UserPrincipal.FindByIdentity ()