Я создал собственное приложение 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
, и результаты такие же.Причина наличия статического класса не в том, чтобы дублировать один и тот же код в каждом контроллере.
Любая помощь будет высоко оценена.Спасибо!