Автоматическая проверка подлинности Windows в открытом доступе? - PullRequest
1 голос
/ 28 марта 2019

Я занимаюсь разработкой веб-приложения 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, как на изображении ниже: enter image description here

На данный момент у меня есть следующие вопросы:

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

1 Ответ

1 голос
/ 28 марта 2019

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

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

EDIT

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

...