我们有一个用 Asp.Net Core 开发的用户中心系统,这个系统接入第三方登录,并且对公司业务提供 OAuth 授权。
Asp.Net Core 的第三方登录组件都依赖 .Identity.External 和 .AspNetCore.Correlation.* Cookies 保存一些数据。
我们之前偶有遇到因为 Cookies 过大(有些时候 .Identity.External 足有 ~2k 的巨大体积)导致的 404 问题,所以改用 SessionStore 来保存 claims。
自从改用 SessionStore 之后,国内访问就经常遇到 OAuth 中间件报错、取不到 OAuth 用户信息等问题,仔细检查 log 之后发现后端取到的 Cookie 是空的,而数据库中这些数据并没有异常。
国外访问(我们国外使用 Akamai 的 CDN )正常,而通过 Hosts 直接访问源站也没用问题,初步怀疑是国内 CDN 的问题,通过跟踪调试也发现通过国内 CDN 后,后端不能正确取得 SessionStore 的 key,于是导致无法从数据库获取对应 claims。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.