Идентичность AspNetCore в Microsoft Edge - PullRequest
0 голосов
/ 14 марта 2019

Я использую 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.

Любой, с похожим прошлым опытом или с любыми указателями, будет очень полезен Спасибо

...