. NET Core 2.2 с Identity Server 4 SameSite Cook ie Изменения Проблема - PullRequest
0 голосов
/ 10 марта 2020

У меня есть одностраничное веб-приложение, состоящее из следующих элементов:

  1. Angular 8 Front End
  2. . Net Core Web Api Back End
  3. . Net Core Identity Server Authentication Server

Недавно я начал видеть несколько предупреждений в моей консоли, на которых написано: "Повар ie, связанный с межсайтовым ресурсом в" ", был устанавливается без атрибута «SameSite». В следующем выпуске Chrome файлы cookie будут доставляться только с межсайтовыми запросами, если для них установлены значения «SameSite = None» и «Secure».

Таким образом, на основании этого Я провел небольшое исследование и нашел следующую статью, в которой подробно объясняется все, что происходит. Объяснение Кука ie Выпуск

Я читал статью на нескольких и думаю, что у меня есть gr asp, но я все еще борюсь за один простой аспект этого. Есть несколько областей, где они просят вас добавить какой-то код в ваш «Проект». Мой вопрос в некотором роде wb ie с Identity Server и его внутренней работой) - это то, что является «Проектом», на который они ссылаются. Я не совсем уверен, куда поместить код, который они предоставляют, чтобы решить проблему.

  1. Для меня не очень очевидно, куда именно поместить предоставленный код. У меня есть 2 решения Visual Studio - одно, представляющее мой сервер аутентификации (Identity Server), и одно для моего Web Api. В какие файлы этих решений Startup.cs я добавляю решение для кода?
  2. Если я добавлю его в свой проект Identity Server, у меня возникнет путаница в том, что я не использую «Аутентификацию на основе Cook ie», поэтому в моем проекте сервера идентификации нигде не существует места, в котором устанавливается повар ie, и я знаю, что часть решения, упомянутого в статье, заключается в добавлении повара ie, который является одновременно "безопасным" и установлен на "Same-Site = None". Где в проекте я могу создать этот тип повара ie?
  3. Еще одна вещь, которую я заметил, это то, что после установки файлов cookie они не удаляются при выходе из системы.

Имейте в виду, что эти проблемы возникают только на MacOS под управлением Google Chrome. Если я запускаю свое приложение на Windows P C, я все равно вижу предупреждения, но могу выйти из системы и удалить все существующие куки

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

В Google Chrome вы увидите консольный конфликт, и вашему серверу идентификации не удалось перенаправить на клиент, которым может быть приложение React или Angular приложение для Chrome версии 80.

повар ie связанный с ресурсом at был установлен с SameSite = None, но без Secure. Он был заблокирован, так как Chrome теперь доставляет только куки с пометкой SameSite = None, если они также помечены как безопасные. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе «Приложение»> «Хранилище»> «Файлы cookie» и просмотреть более подробную информацию по адресу https://www.chromestatus.com/feature/5633521622188032.

. Чтобы исправить это, необходимо внести изменения, указанные в приведенной ниже ссылке -

https://www.thinktecture.com/en/identity/samesite/prepare-your-identityserver/

ПРИМЕЧАНИЕ. Для. Net Core 2.2, установите SameSite = (SameSiteMode) (- 1), Для. Net Core 3.0 или выше, set SameSite = SameSiteMode.Unspecified

Кроме того, для версии Chrome 80 добавьте это дополнительное условие -

 if ( userAgent.Contains("Chrome/8"))
            {
                return true;
            }
0 голосов
/ 10 марта 2020

IdentityServer всегда будет создавать cook ie при входе в систему. Вы можете прочитать больше здесь - http://docs.identityserver.io/en/3.1.0/topics/signin.html

Это означает, что сервер идентификации использует cook ie для аутентифицированного пользователя

Вы можете настроить тот же повар сайта ie, как следует

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie("Cookies", options =>
            {
                options.Cookie.SameSite = SameSiteMode.Lax;
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...