我们有一个用 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。
1
lhx2008 2019-01-18 23:23:40 +08:00 via Android
cookies 应该是用户头发的吧,我感觉和 cdn 关系不大,另外动态内容为什么要走 cdn
|
2
lhx2008 2019-01-18 23:29:26 +08:00 via Android
先看看 cookies 在哪一个环节丢的,为什么 cdn 没有原样转发
|
3
chinvo OP |
4
pubby 2019-01-18 23:45:49 +08:00
这种动态内容为啥用 CDN,不是应该用腾讯云的动态加速服务吗?
|
5
chinvo OP @pubby #4 所以已经在考虑切换了,之前上 CDN 的时候动态加速服务还没有推出公测,最近越来越频繁发现这类问题所以才提出来想和大家讨论看看。
虽然动态内容用 CDN 有点偏离 CDN 的设计目的,但是毕竟国外很少区分 CDN / DSA 之类的产品,CF 和 Akamai 都是动态静态合一的服务。 |
6
alvin666 2019-01-18 23:52:55 +08:00 via Android
动态内容再动一般来说 50 是静态的,50 是真的动,所以上 cdn 不仅能防 cc,抗 d,也能加快挺大速度的
|
7
lhx2008 2019-01-18 23:54:29 +08:00
@chinvo 提工单我觉得没啥用,用户 setCookies 的时候 set 到了吗,时间有没问题,最后发上 cdn 的时候有没有带 cookies 头,这些不能测试吗?
|
8
huobazi 2019-01-18 23:54:52 +08:00 via iPhone
讲讲你 session 存在哪里的
|
9
chinvo OP |
10
tencentcloud 2019-01-19 09:17:57 +08:00
您好, 留意到您已提交了工单,我们正在核查处理,会尽快联系您沟通处理,感谢您的支持与理解。
|