关于 IdentityServer4 在最新版 Chrome 上登录失败的问题
问题描述
公司用identityserver4作为授权认证中心,刚开始用着都毫无违和感,昨儿突然就登录不上了;
问题分析
F12看了请求,发现是请求授权的时候失败了...
回想了一下脑海里关于对identityserver4的些许理解,怀疑是证书的问题,因为当时制作证书的时候时间设置的有点短,可能过期了,于是一顿操作替换证书,重新部署请求,然而并不是...
既然猜测的不对,那就只能通过看服务端日志了,果然找到了一段日志:Showing login: User is not authenticated
打开百度,复制、粘贴一把梭,果然面向百度编程就是easy.
原因
由于最新版的Chrome的Cookie策略导致写Cookie失败,从而导致用户认证的失败.
SameSite=strict
:对于来自不同于源站的站点发出的请求,不发送cookie,为了防止CSRF攻击。
SameSite=lax
:类似于strict,但是当用户有意地通过单击链接或发送表单启动请求时,就会发送cookies。不会在脚本请求时发送。
SameSite=none
:无论请求来自哪里都可以(但是需要https)。
解决
问题找到了解决也就简单了,把Cookie策略设置了lax即可(谁让公司没上https,才出了这么多事儿).
public void ConfigureServices(IServiceCollection services)
{
....
// 配置cookie策略
services.Configure<CookiePolicyOptions>(options =>
{
options.MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.Lax;
}
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
....
app.UseCookiePolicy();
}
解决问题的链接:https://www.e-learn.cn/topic/3672478
总结
- 其实这个问题公司的测试同事好久之前就出现过,只是因为自己的无知,当时自己无法复现这个问题,所以就没有去重视它,所以珍惜测试同事提出的每个bug,进步就在眼前.
- 软件想要持续的保持活力得不停的更新、迭代,不然就会被抛弃,小小的cookie都已经发展得这么复杂了...
分类:
dotnet core
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫