Проверка подлинности Windows в ASP.NET Core: вход в систему вручную или автоматический вход в интрасеть и доступные группы - PullRequest
6 голосов
/ 06 октября 2019

У меня есть приложение ASP.NET Core 3.0, которое работает с локальной аутентификацией Windows в интрасети для идентификации вошедших в систему пользователей. Используя стандартные способы аутентификации Windows, я могу без проблем перехватить пользователя WindowsIdentity.

Однако, в зависимости от того, как пользователь вошел в браузер с помощью автоматического входа в браузер интрасети (т. Е. Без пароля). или явный вход в систему с помощью диалогового окна «Пароль браузера», Я получаю разные результаты для групп пользователей .

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

Для явного входа в систему я правильно вижу все пользовательские группы, в которые входит пользователь. Однако для автоматического входа в систему те же группы не отображаются:

group differences for manual vs. auto login

Я также внимательно изучил экземпляры User и Identity всервер, и он ссылается на одни и те же идентификаторы безопасности для пользователя, поэтому кажется странным, что разные результаты возвращаются для членства в группе.

Любые идеи, почему список групп отличается, когда я получаю ту же учетную записьвернулся? Обратите внимание, что группы являются локальными, поэтому это не должно быть проблемой из-за доступа к домену.

Примечание: я тестирую локально даже на localhost, и чтобы проверить это, я установил здесь настройки Windows Proxy:

Login configuration

Когда флажки сняты, я вынужден войти в систему. Когда они включены (в любом случае в браузерах Chromium), я должен явно ввести свои учетные данные в диалоговое окно входа в браузер.

1 Ответ

6 голосов
/ 11 октября 2019

Пользователь вышел из своего компьютера после добавления в эти группы?

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

Ввод вручную имени пользователя и пароля приводит к новому входу в систему и, таким образом, к моменту входа в систему получает новый токен со всеми группами. Так что новые группы появятся там.

...