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

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

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

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

group differences for manual vs. auto login

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

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

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

Конфигурация входа в систему

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

10
Rick Strahl 6 Окт 2019 в 03:01

1 ответ

Лучший ответ

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

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

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

9
Gabriel Luci 11 Окт 2019 в 19:33