Мы используем более старый сервер Identity на .NET Framework 4.6.2 с IdentityServer4, который планируем заменить в начале следующего года. Тем временем нам пришлось обновить наше основное приложение до .NET 8, чтобы оставаться в курсе поддержки LTS. С момента обновления мы столкнулись с проблемой: приложение отлично работает как по HTTP, так и по HTTPS при доступе через локальный хост или 127.0.0.1, но когда мы используем имя машины (например, http://имя-машины) через HTTP. , происходит сбой.
В частности, при доступе к приложению с именем компьютера через HTTP поток OIDC немедленно переходит к AddOpenIdConnect -> Events -> OnRemoteFailure. Мы видим отсутствующие файлы cookie с сообщением об ошибке «Сбой корреляции», и он просто бесконечно возвращается к /. Переключение на HTTPS решает проблему, но из-за текущих ограничений нам действительно нужно, чтобы это работало через HTTP.
Вот что я пробовал:
Установка SameSite=None для файлов cookie в нескольких местах (CorrelationCookie.SameSite, Cookie.SameSite и т. д.).
Явная установка AllowedHosts для имени нашего компьютера в Program.cs.
Настройка конфигураций файлов cookie, таких как Cookie .Domain и Cookie.SecurePolicy как для основного приложения, так и для IdentityServer.
Убедитесь, что политики CORS разрешают использование имени компьютера через HTTP.
При такой настройке сталкивался ли кто-нибудь с подобным файлом cookie или проблемы OIDC, специально связанные с изменениями .NET 8? Существуют ли в .NET 8 новые настройки или поведение, которые могут повлиять на передачу файлов cookie HTTP между приложениями на одном компьютере при использовании разных имен хостов?
Любая информация о неожиданных изменениях в обработке OIDC или политиках использования файлов cookie, которые может помочь нам заставить это работать без HTTPS, мы будем очень признательны!
Подробнее здесь: https://stackoverflow.com/questions/791 ... when-using