Согласно этой документации Дополнение: Авторизация учетной записи службы без OAuth , там указано:
Если API, который вы хотите вызвать, имеет определение службы, опубликованное в API Google Репозиторий GitHub , вы можете выполнять авторизованные вызовы API, используя JWT вместо токена доступа
Я вижу Google Cloud Storage , опубликованный в этом репозитории Github, но я не могу показаться чтобы иметь возможность получить файл в Google Cloud Storage с подходом в документации. В соответствии с заголовком JWT и примером полезной нагрузки, показанным на шаге 3 документации, я внес следующие изменения:
- Изменение
kid
с abcdef1234567890
на мою учетную запись службы private_key_id
- Измените
iss
и sub
на мою учетную запись службы client_email
- Замените
aud
на https://storage.googleapis.com/
- Замените
iat
и exp
на сейчас и сейчас + 1 час
Я использую подписанный JWT в качестве токена-носителя, пытаясь получить файл из http://storage.googleapis.com/<bucket>/path/file
, но продолжаю получать этот ответ
<?xml version='1.0' encoding='UTF-8'?><Error><Code>AuthenticationRequired</Code><Message>Authentication required.</Message></Error>
Действительно ли мы можем использовать этот подход с Google Cloud Storage? Я делаю что-то не так?
Обратите внимание, что я могу получить доступ к файлу с помощью oauth access_token, следуя другому подходу, описанному на той же странице документации , но я предпочитаю не делать запрос на получение access_token прежде, чем делать запрос на получение файла.