Я пытаюсь загрузить файлы в Google Cloud Storage через HTML-форму через метод POST. Google заявляет в своем documentation, что для назначения нестандартного ACL вам необходимы как правило, так и поле подписи.Создать документ и подпись Google Cloud Storage Документ и подпись
Чтение их описаний о том, как сгенерировать эти значения, кажется довольно простым. К сожалению, после многих попыток я все еще не могу генерировать значения, которые будут проходить фильтры Google. Я постоянно получаю ошибки, говоря, что моя подпись не соответствует политическому документу.
Может ли кто-нибудь проинструктировать меня, где я ошибаюсь? Это мой процесс:
- Построить свой программный документ
Это легкая часть. Мой документ политика:
{"expiration": "2015-06-16T11:11:11Z",
"conditions": [
["starts-with", "$key", ""],
{"acl": "public-read" },
{"bucket": "publicjs"},
{"success_action_redirect": "http://localhost/gcs.php" }
] }
Я тогда пошел в this website и закодировал выше значение в base64. Это то, что я использую в качестве своего политического документа.
Теперь для подписи. Мне нужно зашифровать свой документ политики с помощью моего секретного ключа в качестве ключа шифрования, поэтому я пошел к this website, чтобы выполнить шифрование. Я ввел свой документ с закодированной политикой base64 (с шага 2) в основную текстовую область и мою функциональную возможность «Секретный» ключ в поле ключа.
Нажмите Enter, а значение рядом с base64 должно быть значение подписи.
Положите значения в форму, отправьте запрос POST, получите ошибку.
Куда я иду не так?
На самом деле получил это выяснили. Я случайно делал SHA256 (как указано в документации Google), но SHA1 действительно то, что требуется. Кроме того, если я использую «ключ» вместо «$ key», я получаю недопустимые ошибки политики. – jwegner
При использовании ключа функциональной совместимости требуется хэш SHA1, но при использовании ключа RSA требуется SHA256. Я думаю, что документ, на который вы ссылаетесь, предполагает RSA, но это может быть более ясным в этом вопросе (я написал запрос, чтобы исправить это).Вы правы в знаках доллара, они не принадлежат при использовании имен полей, но они необходимы при использовании условных выражений, которые вы используете здесь. Я обновил свой код, чтобы отразить эту коррекцию, чтобы я не вводил в заблуждение посетителей этой темы. Спасибо, Джозеф! –
@MarcCohen У меня есть невозможное время, пытаясь заставить подписи работать (ПРИМЕЧАНИЕ. Я пытаюсь использовать ключи функциональной совместимости и SHA1, как и ваш пример). Все, что я когда-либо получаю, это «SignatureDoesNotMatch». Похоже, что если моя строка POLICY имеет какую-либо разницу в пробелах, чем одна группа Google, то это полностью изменит окончательную подпись, и они не совпадут. Как я узнаю, что моя строка политики имеет точный ожидаемый формат одного Google, скомпонованного перед кодировкой/подписью? –