Как найти источник ошибки SignatureDoesNotMatch в Minio

#amazon-s3 #.net-core #minio

#amazon-s3 #.net-core #minio

Вопрос:

Уже более года мы запускаем одностраничное приложение (SPA с Angular), которое получает объекты Json с предварительно подписанными URL-адресами из .NET Core API. 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-адресов get и put: может ли это быть причиной? На скриншотах в отчете об ошибке показаны предварительно подписанные URL-адреса, но я не видел указателя в URL-адресе, если он был сгенерирован как put или get URL.

Ответ №1:

@monty У меня недостаточно информации для определения основной причины. Возможно, это может быть вызвано неправильным кодированием имени объекта, которое могло быть исправлено в более новой версии minio и minio dot-net SDK.

Какую версию minio вы используете? Я вижу, что вы используете версию Minio Dotnet 3.0.2.

Происходит ли это с определенными именами файлов и объектов?

Комментарии:

1. интересно, что причиной могут быть учетные данные (доступ и секретный ключ), содержащие специальные символы, такие как «!»