ADFS3.0 Thread.CurrentPrincipal.Identity.Name возвращается как пустая строка между запросами - PullRequest
0 голосов
/ 22 мая 2018

Я создал собственное приложение ASP.Net MVC5, развернутое в DMZ (сеть периметра организации), для аутентификации пользователей через ADFS 3.0 (службы федерации Active Directory).Приложение разворачивается в IIS с включенной анонимной аутентификацией, и, поскольку это DMZ, поэтому сервер не соединен с доменом, и у меня нет доступной аутентификации Windows.Что касается ADFS и аутентификации, это работает отлично, так как пользователям предлагается имя пользователя / пароль при доступе к приложению из внешней сети и использование SSO (единый вход) при доступе изнутри сети.

Однакопроблема в том, что у меня есть статический класс, который получает текущего пользователя и проверяет его по таблице пользователей в базе данных.Чтобы получить текущего пользователя, я использую Thread.CurrentPrincipal.Identity.Name.Первоначально он возвращает мне имя пользователя, но в процессе навигации по разным страницам приложения он переворачивается и начинает возвращать пустую строку.Там нет конкретного шаблона, когда он переворачивается.Для того же пользователя и сеанса, внезапно я начинаю получать пустую строку, и после нескольких обновлений страницы она возвращает мне имя пользователя.

Теперь, что я не уверен, если эта проблема вызванак статическому классу и методу, где я вызываю Thread.CurrentPrincipal.Identity.Name или что-то не так с конфигурацией приложения.Я также пробовал HttpContext.Current.User.Identity.Name, и результаты такие же.Причина наличия статического класса не в том, чтобы дублировать один и тот же код в каждом контроллере.

Любая помощь будет высоко оценена.Спасибо!

1 Ответ

0 голосов
/ 25 мая 2018

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

...