Как автоматически определить имя пользователя Windows при Page_Load? - PullRequest
0 голосов
/ 15 ноября 2018

Может ли имя пользователя Windows автоматически определяться без необходимости входа пользователя с использованием своего имени пользователя и пароля для веб-приложения?Этот пользователь, конечно, вошел бы в Windows с тем же именем пользователя Active Directory.

Пока я вижу, что если у меня есть настройка веб-приложения в IIS, подключающегося как пользователь (пароль)через аутентификацию) с использованием пула приложений с идентификатором NetworkService и NetworkService с Чтением и выполнением , Список содержимого папки и Чтение , затем происходит одно из трех:

  1. При включенной анонимной аутентификации и включенной аутентификации с помощью форм веб-страница возвращает имя хоста IIS как Environment.UserName и, следовательно, не может получитьимя пользователя пользователя автоматически.
  2. При включенной анонимной аутентификации, включенном олицетворении ASP.NET и включенной аутентификации с помощью форм веб-страница возвращает IUSR как Environment.UserName и, следовательно, не может автоматически получить имя пользователя пользователя автоматически.
  3. При включенной аутентификации Windows, apВ окне операции запрашивается имя пользователя и пароль пользователя.

Я просматриваю Environment.UserName на Page_Load:

    protected void Page_Load(object sender, EventArgs e)
    {
        //Set username on interface
        txtUsername.Text = Environment.UserName;
    }

И если я спрашиваю у пользователя учетные данные, ябудет использовать:

//Determine if user entered the correct username and password
bool AuthenticatedViaAD = DomainContext.ValidateCredentials(loginModule.UserName, loginModule.Password);

То, что я надеюсь использовать, не спрашивая у пользователя его имя пользователя, это:

//Get current user
UserPrincipal currentUser = UserPrincipal.FindByIdentity(DomainContext, Environment.UserName);

Page.User.Identity.Name заполняется соответствующим образом после того, как пользователь вводит свое имя пользователя и пароль с включенной аутентификацией Windows:

txtPageUser.Text = Page.User.Identity.Name;

1 Ответ

0 голосов
/ 15 ноября 2018

Вероятно, это связано с политикой безопасности браузера (если ввод учетных данных Windows работает)

IE и большинство других браузеров не будут отправлять проверку подлинности Windows на ненадежные веб-сайты или веб-сайты интрасети, поскольку это является очевидной угрозой безопасности.

Попробуйте добавить сайт в список доверенных сайтов и посмотрите, решит ли это вашу проблему.

...