腾讯云 CDN 导致后端 cookie、session 工作不正常

2019-01-18 23:17:30 +08:00
 chinvo

我们有一个用 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。

3579 次点击
所在节点    全球工单系统
10 条回复
lhx2008
2019-01-18 23:23:40 +08:00
cookies 应该是用户头发的吧,我感觉和 cdn 关系不大,另外动态内容为什么要走 cdn
lhx2008
2019-01-18 23:29:26 +08:00
先看看 cookies 在哪一个环节丢的,为什么 cdn 没有原样转发
chinvo
2019-01-18 23:45:05 +08:00
@lhx2008 #1 主要是防止源站 IP 泄漏,已经考虑换负载均衡或者高防 IP 之类的产品了

因为 CDN 内的动作没有办法跟踪调试,目前已经在腾讯云控制台提工单了
pubby
2019-01-18 23:45:49 +08:00
这种动态内容为啥用 CDN,不是应该用腾讯云的动态加速服务吗?
chinvo
2019-01-18 23:50:28 +08:00
@pubby #4 所以已经在考虑切换了,之前上 CDN 的时候动态加速服务还没有推出公测,最近越来越频繁发现这类问题所以才提出来想和大家讨论看看。

虽然动态内容用 CDN 有点偏离 CDN 的设计目的,但是毕竟国外很少区分 CDN / DSA 之类的产品,CF 和 Akamai 都是动态静态合一的服务。
alvin666
2019-01-18 23:52:55 +08:00
动态内容再动一般来说 50 是静态的,50 是真的动,所以上 cdn 不仅能防 cc,抗 d,也能加快挺大速度的
lhx2008
2019-01-18 23:54:29 +08:00
@chinvo 提工单我觉得没啥用,用户 setCookies 的时候 set 到了吗,时间有没问题,最后发上 cdn 的时候有没有带 cookies 头,这些不能测试吗?
huobazi
2019-01-18 23:54:52 +08:00
讲讲你 session 存在哪里的
chinvo
2019-01-18 23:58:37 +08:00
@lhx2008 #7 Set 看起来 Set 到了,在隐私模式中可以看到有新增对应的 Cookie,就是不知道值是否正确


@huobazi #8 SessionStore 是可以自己实现的 Interface,我这里是存 DistributedSqlServerCache
tencentcloud
2019-01-19 09:17:57 +08:00
您好, 留意到您已提交了工单,我们正在核查处理,会尽快联系您沟通处理,感谢您的支持与理解。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/528456

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX