Как подписать URL-адрес для загрузки в Google Cloud Storage (PUT) без контрольной суммы MD5 на AWS Lambda - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь сгенерировать подписанный URL в AWS Lambda для загрузки (помещения) объекта в GCS.

У меня есть этот код (http://dpaste.com/20QWFRG) из различных примеров, и он работает как есть. Но как только я удаляю контрольную сумму MD5 из передаваемого заголовка во время подписи, который должен быть необязательным (https://cloud.google.com/storage/docs/access-control/signing-urls-manually) это дает мне ошибку.

Вот тот же код без контрольной суммы MD5, передаваемой в качестве заголовка, и он не работает: http://dpaste.com/2ZH1VVP

1 Ответ

0 голосов
/ 22 января 2019

Удаление Content-MD5 - очень плохая идея ™.Это технически необязательно, но не должно быть, потому что это критично для целостности данных.

Но если вы настаиваете ... проблема с кодом подписи заключается в том, что вы удаляете пустую строку 1005 *это происходит там, где должен был быть полезный хэш MD5.

Примечание. После каждого шага построения строки добавляйте в строку новую строку (\n).

https://cloud.google.com/storage/docs/access-control/signing-urls-manually

Итаквам нужно ...

signature_string = ('{verb}\n'
                    '\n'
                    '{content_type}\n'
                    ...

Строка-знак всегда имеет одинаковое количество строк, ограниченных \n, даже если некоторые строки оставлены пустыми для необязательных значений.

Поскольку строка для подписи используется в качестве входных данных для HMAC, а затем отбрасывается, служба не имеет возможности учесть отклонения от точного формата, независимо от того, насколько он мал.

...