首页 > 解决方案 > 如何在 Minio 上找到 SignatureDoesNotMatch 错误的来源

问题描述

一年多以来,我们一直在运行一个单页应用程序(带有 Angular 的 SPA),它从 .NET Core API 接收带有预签名 url 的 Json 对象。SPA 显示一个列表并使用预签名的 url 显示图像/视频(直接从

突然,列表中的一些预签名 url 仍然有效,其他的SignatureDoesNotMatch在嵌入图像/视频时会导致错误。其他人工作。

<Error><Code>SignatureDoesNotMatch</code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>...

也许有人对 Minio/S3 有经验,可以帮助我建立一个检查列表来查找此错误的根源。

到目前为止,我有:

  1. 配置(访问密钥、密钥、主机):因为大多数 url 都有效,所以有些不应该是有效的

  2. Url 生成:对于工作和不工作的 url,我使用 Minio .NET SDK (3.02) 生成它们。

await _minio.PresignedGetObjectAsync(bucket, key, ttl); 
await _minio.PresignedPutObjectAsync(bucket, key, ttl); 
  1. 混合获取和放置网址:这可能是一个原因吗?错误报告中的屏幕截图显示了预签名的 url,但如果它是作为 put 或 get url 生成的,我没有在 url 中看到指示符。

标签: amazon-s3.net-coreminio

解决方案


@monty 我没有足够的信息来确定根本原因。这可能是由于对象名称的错误编码可能已在新版本的 minio 和 minio dot-net SDK 中修复造成的。

你用的是什么版本的minio?我看到您使用的是 Minio Dotnet 3.0.2 版本。

它是否发生在某些文件和对象名称中?


推荐阅读