Я использую Identity 2.0 с AzureAd в .NET Core 2.0 приложении (React front end). Все вызовы данных выполняются с использованием fetch 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 имеет другую реализацию fetch , но я не могу найти какой-либо простой литературы по этому вопросу. Я перепробовал все возможные значения для клавиши credentials
.
Любой, с похожим прошлым опытом или с любыми указателями, будет очень полезен Спасибо