【问题标题】:Signed Cookies with Google Cloud CDN responds with 403使用 Google Cloud CDN 签名的 Cookie 以 403 响应
【发布时间】:2021-02-21 00:40:31
【问题描述】:

我正在尝试通过 Google Cloud CDN 让 hls / dash 流工作,以获得视频点播解决方案。文件/清单位于谷歌云存储桶中,一切看起来都配置正确,因为我遵循了文档https://cloud.google.com/cdn/docs/using-signed-cookies 的每一步。

现在我正在使用来自Google Cloud CDN signed cookies with bucket as backend 的等效 Node.js 代码来创建一个具有正确签名密钥名称和值的签名 cookie,这是我之前在谷歌云中设置的。 cookie 已发送到我在 Google Cloud 中的负载平衡器后端。

可悲的是,我总是收到 403 回复说 <?xml version='1.0' encoding='UTF-8'?><Error><Code>AccessDenied</Code><Message>Access denied.</Message></Error>

更多信息:

  • 签名的 urls / cookie 在负载均衡器后端激活
  • cdn-account 存储桶中的 IAM 角色设置为“objectViewer”
  • 签名密钥已创建、保存并用于对 cookie 进行签名

非常感谢您对此的任何帮助。

编辑: 我刚刚尝试了确切的 python 代码谷歌状态来创建来自 https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/cdn/snippets.py 的签名 cookie,具有以下参数:

电话:sign_cookie('http://cdn.myurl.com/', 'mykeyname', 'mybase64encodedkey', 1614110180545)

密钥是从谷歌直接复制的,因为我在那里生成它。

负载均衡器日志写入invalid_signed_cookie

【问题讨论】:

  • 如果没有要测试的示例 URL 就很难调试,但一个常见的问题是您的密钥编码错误(错误的 base64 格式)或者您上传了错误的密钥,或者格式错误。看看 Go 和 Python 中的示例代码:cloud.google.com/cdn/docs/…
  • 感谢@elithrar 的回答。我刚刚编辑了描述以提供更多详细信息。也许这有帮助?
  • 我建议打开支持请求 - 我怀疑您的密钥/您使用它的方式存在问题。一个常见问题是您在键中包含换行符或截断它。

标签: cookies google-cloud-storage signed google-cloud-cdn signed-url


【解决方案1】:

我遇到了同样的问题。 奇怪的是,它仅在网络浏览器中无法正常工作。我见过 GoolgeChrome 和 Safari 会返回 403,即使它们包含 cookie。但是,我注意到 curl 中具有完全相同 cookie 的相同请求返回 200。我认为这意味着它在 Web 浏览器中无法正常工作。我现在正在向 GCP 寻求支持,但我没有得到一个好的答案。

编辑: 经过多次假设和测试,我发现当我使用的cookie库格式化并在Set-Cookie header中插入值时,会自动执行URLEncoding并发送CloudCDN无法理解的cookie。因此,Web 浏览器现在可以通过将内容添加到 Set-Cookie 标头而不使用 URLEnconding 来检索内容。

【讨论】:

  • 有趣。感谢分享。
猜你喜欢
  • 2019-06-11
  • 2019-03-03
  • 2017-07-06
  • 2019-10-30
  • 2020-08-23
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多