Я разрабатываю веб-приложение Asp.NET Core и включил для него проверку подлинности Windows, следуя официальному руководству Microsoft:

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth?view=aspnetcore-2.2&tabs=visual-studio

Аутентификация работает, но я не совсем понимаю одну вещь. Если я получаю доступ к веб-сайту с помощью браузера с машины, которая находится в домене Windows, у меня есть два разных поведения в зависимости от того, как я к нему обращаюсь:

  • Если я получаю доступ, используя имя компьютера в адресе (пример: https: // devmachine01 /), браузер автоматически входит в систему, и я прошел аутентификацию, без каких-либо действий со стороны пользователя
  • Если я получаю доступ, используя общедоступное доменное имя машины (например, https://mypublicwebsite.com), браузер просит меня ввести мои учетные данные Windows, как на изображении ниже: введите описание изображения здесь

Мои вопросы на данный момент:

  1. есть ли способ заставить браузер входить в систему автоматически, даже если я обращаюсь к общедоступному домену вместо имени машины? (очевидно, я ожидаю, что это сработает автоматически, только если компьютер, на котором запущен браузер, вошел в домен)
  2. Если ответ на первый вопрос отрицательный, могу ли я по крайней мере настроить свое веб-приложение Asp.NET Core так, чтобы оно запоминало пользователя, чтобы пользователю нужно было войти в систему только один раз (с помощью файла cookie или аналогичного механизма)? С помощью инструкций, приведенных в статье, на которую я ссылался выше, пользователь должен повторно вводить свои учетные данные каждый раз, когда он закрывает и повторно открывает браузер, что не является самым удобным.
1
Master_T 28 Мар 2019 в 13:48

1 ответ

Лучший ответ

Проверка подлинности Windows, схема проверки подлинности, которая позволяет автоматический вход в систему, основана на всем, что принадлежит одному домену: провайдеру удостоверений (AD), веб-серверу и клиенту (локальному компьютеру). Общедоступный веб-сайт по самому определению не является частью домена, и поэтому Windows Auth (или, по крайней мере, ее функция автоматического входа в систему) не может работать в такой среде.

Вы все еще можете технически использовать Windows Auth или AD в целом. Например, Azure Active Directory предназначен для работы в распределенных средах. Однако вы должны пройти аутентификацию вручную (либо с помощью обычного имени пользователя и пароля, либо через поток OAuth). Вы не можете иметь автоматический вход с общедоступного веб-сайта.

ИЗМЕНИТЬ

Извините, я изначально недостаточно внимательно прочитал ваш вопрос. Хотя это не меняет моего ответа, оно требует дополнительных пояснений. Хотя машина технически находится в домене, ее фасад, обращенный наружу, не . Вот почему доступ к нему через имя хоста работает, а через реальный веб-домен - нет. Тем не менее, вы абсолютно ненормальный , открывая доступ к Интернету на компьютер в вашем домене. Даже если бы вы могли заставить это работать, риск безопасности дыры, которую вы открываете, намного превосходит простую тонкость, такую ​​как автоматический вход в систему. Ваша внутренняя сеть должна быть внутренней , и вам следует удалить этот компьютер из домена немедленно .

2
Chris Pratt 28 Мар 2019 в 13:15