0

似乎让所有浏览器都满意是一项具有挑战性的任务,因为它们增加了所有的安全性以及证书的复杂性。

我有一个 SPA (Vuejs)oidc-client.js用于实现 OIDC,与 Identity Server (Identity Server 4) 通信。首先要注意的是,如果我在 localhost 上同时运行客户端和服务器,一切正常。

当我将 Identity Server 部署到我们网络中的 Staging Server 时,事情就出了问题。因此,Idp 的主机名现在与 SPA 的主机名不同(这在生产中是正常的)。

经过大量工作,除了 IE11(是的 IE)之外,我已经完成了所有工作。我必须做几件事才能到达那里,例如:

  • 解决 Chrome 的同站 cookie 问题
  • 创建自签名证书并在 Trusted Certificates 中安装根证书
  • 在客户端添加 Babel 配置代码和 Core.js,使 IE 在 Promise 生效时不会抛出错误

所以,这是一条漫长的道路,但我仍然必须处理这个(见动画): 在此处输入图像描述

我只是不明白为什么 IE 会这样做。
无法使用开发工具查看任何信息。
服务器上的日志不包含任何似乎相关的信息。

有没有其他人在 IE 中看到这些“浏览器症状”。

如果人们认为这会有所帮助,很乐意提供更多信息(代码、日志等)。只是不想在最初的问题中倾倒所有这些,因为很多人不喜欢这样。

这是几个 Fiddler 屏幕截图。第一个来自Chrome在此处输入图像描述 第二个来自IE11在此处输入图像描述

出于某种原因,IE11 一次又一次地调用静默刷新。

我想我可以看到正在发生的事情,但不知道如何解决它。
似乎有 2 次对Authorize端点的调用失败,明显缺少.AspNetCore.Antiforgerycookie。这导致 2 次调用silent-refresh.html

然后,由于某种原因,对 Idp 的基本 url 有一些 GET 请求之王,紧随该请求之后是对具有cookie的Authorize端点的请求。.AspNetCore.Antiforgery

船被设置直,直到下一次呼叫Authorize端点,即下一个循环的开始。

但是,对于Chrome,在用户登录后,对Authorize端点的下一次调用确实包含 cookie。

所以,我想问题是缺少 cookie。

也许这与我在这篇文章中用于解决 Chrome samesitecookie 问题的代码有关?

干杯

4

0 回答 0