#c# #asp.net-core #asp.net-core-mvc #windows-authentication #asp.net-core-2.2
#c# #asp.net-core #asp.net-core-mvc #windows-проверка подлинности #asp.net-core-2.2
Вопрос:
Я разрабатываю Asp.NET Основное веб-приложение, и я включил в нем проверку подлинности Windows, следуя официальному руководству Microsoft:
Проверка подлинности работает, но есть одна вещь, которая мне не ясна. Если я получаю доступ к веб-сайту с помощью браузера с компьютера, который находится в домене Windows, у меня есть два разных варианта поведения в зависимости от того, как я получаю к нему доступ:
- Если я получу доступ, используя имя компьютера в адресе (пример:https://devmachine01 / ) браузер автоматически входит в систему, и я аутентифицируюсь, без каких-либо действий, требуемых со стороны пользователя
- Если я получу доступ, используя имя общедоступного домена компьютера (пример:https://mypublicwebsite.com ) браузер просит меня ввести мои учетные данные Windows, как на изображении ниже:
Мои вопросы на данный момент:
- есть ли способ заставить браузер автоматически входить в систему, даже если я обращаюсь к общедоступному домену вместо имени компьютера? (очевидно, я ожидаю, что это сработает автоматически, только если компьютер, на котором запущен браузер, зарегистрирован в домене)
- если ответ на первый вопрос отрицательный, могу ли я хотя бы настроить свой Asp.NET Основное веб-приложение, чтобы оно запоминало пользователя, поэтому пользователю нужно войти в систему только один раз (с помощью cookie или аналогичного механизма)? Согласно инструкциям, приведенным в статье, на которую я ссылался выше, пользователю приходится повторно вводить свои учетные данные каждый раз, когда он закрывает и вновь открывает браузер, что не является самым удобным.
Комментарии:
1. Обычно сервер должен верить своей части локального / доверенного
2. @BugFinder: извините, но не могли бы вы немного подробнее рассказать об этом? Простите меня, но я новичок в этом методе проверки подлинности, и я не совсем уверен, о чем вы говорите … вы хотите сказать, что это зависит от того, как настроен сервер? Вы имеете в виду компьютер или мое веб-приложение?
3. Это настройки браузера, а не что-либо еще.
Ответ №1:
Проверка подлинности Windows, схема аутентификации, которая позволяет автоматический вход в систему, основана на всем, что принадлежит одному домену: поставщику удостоверений (AD), веб-серверу и клиенту (локальному компьютеру). Общедоступный веб-сайт, по определению, не является частью домена, и, следовательно, Windows Auth (или, по крайней мере, его функциональность автоматического входа в систему) не может функционировать в такой среде.
Технически вы все еще можете использовать Windows Auth или AD в целом. Azure Active Directory, например, предназначена для работы в распределенных средах. Однако вы должны пройти проверку подлинности вручную (либо с помощью традиционного имени пользователя и пароля, либо с помощью потока OAuth). У вас не может быть автоматического входа на общедоступный веб-сайт.
Редактировать
Извините, я изначально недостаточно внимательно прочитал ваш вопрос. Хотя это не меняет мой ответ, он содержит немного больше объяснений. Хотя технически машина находится в домене, ее внешний фасад нет. Вот почему доступ к нему через hostname работает, а через реальный веб-домен — нет. Тем не менее, вы абсолютно безумны, предоставляя доступ компьютеру в вашем домене к Интернету в целом. Даже если бы вы могли заставить это работать, риск безопасности дыры, которую вы открываете, намного превосходит простую тонкость, такую как автоматический вход в систему. Ваша внутренняя сеть должна быть внутренней, и вам следует немедленно удалить этот компьютер из домена.
Комментарии:
1. Спасибо за ваш ответ, очень информативный. Машина еще не открыта, мы все еще оцениваем лучшее решение для этого. После вашего предупреждения, я думаю, мы, вероятно, выберем решение, при котором только компьютеры во внутренней сети (физически или виртуально через VPN) будут иметь доступ к серверу.