Я использую Айдентика 2.0 с AzureAd в приложении .NET Core 2.0 (интерфейс React). Все вызовы данных выполняются с использованием API принести; на стороне сервера я либо использую тег [Authorize], либо проверяю идентификатор пользователя с помощью User.FindFirstValue(ClaimTypes.NameIdentifier).
Все это прекрасно работает как локально, так и при развертывании в Azure, в Chrome и FireFox. Однако с Edge файл cookie, похоже, не передается на сервер. Вот пример вызова, который я сделал при загрузке страницы:
fetch(getProjectsUrl, { credentials: "same-origin" })
.then() ....
но объект User.Identity возвращается нулевым. Моя начальная конфигурация для файлов cookie выглядит следующим образом:
.AddAzureAd(opts => Configuration.Bind("AzureAd", opts))
.AddCookie(opts =>
{
opts.Cookie.Domain = "";
});
потому что я где-то читал, что браузеры Microsoft будут отклонять файлы cookie, когда хост приложения пытается установить домен (я также пробовал с помощью простого .AddCookie()).
Правильный файл cookie (AspNetCore.Identity.Application) сохраняется во всех браузерах для инструментов разработчика (в том числе в Edge), и формат значения файла cookie выглядит правильным (соответствует FF/Chrome); он просто не доходит до сервера при моих вызовах принести из Edge.
Я не удивлюсь, если обнаружу, что это вызвано тем, что в Edge используется другая реализация принести, но я не могу найти никакой прямой литературы по этому поводу. Я пробовал все возможные значения для ключа credentials.
Любой, у кого есть подобный прошлый опыт, или любые указатели, был бы большим подспорьем. Спасибо
Файл cookie определенно попадает в браузер, как я вижу в разделе F12> Отладчик> Файлы cookie> Хост моего сайта. Надеюсь, я правильно понимаю ваш вопрос.





Вы когда-нибудь пытались использовать инструменты разработчика F12, чтобы проверить запрос, содержит ли он файл cookie? Кроме того, вы также можете проверить, изменили ли вы дополнительные настройки Edge View и отключили ли cookie в браузере Edge.