我正在调试使用 IdentityServer4 的旧版 ASPNETCore 身份验证系统的问题。这似乎是 Chrome(和 Edge)如何处理 cookie 的问题。
当登录页面发布用户的凭据时,登录端点会通过 302 重定向响应同一服务器上的回调 URL (/connect/authorize/callback)。此响应包含 3 个新 cookie:
使用 Firefox,浏览器会向回调 URL 发送请求。该请求包含所有 3 个 cookie,并且一切正常。
但是对于 Chrome 或 Edge,对回调 URL 的请求不包含 idsrv cookie,因此请求失败并且我的用户被发送回登录页面。
为什么 Chrome 不包含它刚刚收到的 cookie?
我尝试在 idsrv cookie 上设置 SameSite=Lax,但这没有效果。
您使用的是 HTTP 还是 HTTPS?
如果您在浏览器中使用HTTP,那么cookie将会丢失。我在博客中介绍了如何解决此问题:https://nestenius.se/2023/10/09/debugging-cookie-problems/
现在您必须始终将 HTTPS 与 OpenID-Connect 结合使用。