我在 .NET Core 2.0 应用程序(响应前端)中将 Identity 2.0 与 AzureAd 一起使用。所有数据调用都是使用 fetch API进行的;在服务器端,我要么使用[Authorize]
标签,要么使用User.FindFirstValue(ClaimTypes.NameIdentifier)
检查用户的ID。
在Chrome和FireFox中,所有这些都可以在本地以及部署到Azure时正常工作。但是,对于Edge,cookie似乎没有传递到服务器。这是我在页面加载中进行的示例调用:
fetch(getProjectsUrl, { credentials: "same-origin" })
.then() ....
,但是User.Identity
对象返回null。我的Cookie的启动配置如下:
.AddAzureAd(opts => Configuration.Bind("AzureAd", opts))
.AddCookie(opts =>
{
opts.Cookie.Domain = "";
});
因为我在某处读到Microsoft浏览器会拒绝Cookie,而App Host会尝试在其中设置域名(我也尝试过使用简单的.AddCookie()
)。
每个开发人员工具(包括在Edge中)将正确的cookie(AspNetCore.Identity.Application
)存储在所有浏览器中,并且cookie值格式看起来正确(与FF / Chrome匹配);只是不通过Edge从提取调用将其连接到服务器。
我不会惊讶地发现它是由Edge具有不同的 fetch 实现所引起的,但是我找不到关于此的任何直接文献。我已经尝试过credentials
键的所有可能值。
任何具有类似过去经验或任何经验的人都会对您有很大的帮助。谢谢