Чтение из реестра Google Container с использованием файла JSON API и служебной учетной записи - PullRequest
0 голосов
/ 14 мая 2019

Мы начали переход на Реестр контейнеров Google с того, что ранее использовали наш собственный Docker Registry для размещения наших изображений. В рамках этого я создаю приложение, которое может запрашивать доступные теги в реестре и возвращать список результатов. Для публичного реестра это тривиально. Я просто отправляю HTTP-запрос к API, демонстрируемый здесь с curl:

curl https://example.docker.registry/v2/myapp/tags/list

И это также работает из командной строки с GCR, пока я сначала аутентифицируюсь:

curl -u "oauth2accesstoken:`gcloud auth print-access-token`" https://eu.gcr.io/v2/myproject/myapp/tags/list

Я хочу сделать именно это программно, и я следовал за одной из многих страниц Google по созданию ключа учетной записи службы GCP, такой как этот: https://cloud.google.com/iam/docs/creating-managing-service-account-keys

Теперь у меня есть служебная учетная запись, которой я дал необходимые разрешения, и у меня есть файл ключа JSON для этой служебной учетной записи. Но все инструкции, которые я могу найти в Интернете, говорят мне, как использовать это с установленными gcloud или docker. Даже шаги, которые используют клиентские библиотеки, настолько слабы в документации и объяснениях, что я не могу продвинуться вперед.

Моему приложению не нужны сложные дополнительные инструменты, я просто хочу отправить HTTP-запрос точно так же, как и в публичном реестре. Я ожидаю, что файл ключа доступа JSON содержит все нужные мне фрагменты, даже если вначале происходит ритуальный обмен с Google. Я не могу найти информацию о том, как использовать содержимое, хотя. Это где-нибудь задокументировано?

1 Ответ

0 голосов
/ 14 мая 2019

Моему приложению не нужны сложные дополнительные инструменты, я просто хочу отправить HTTP-запрос так же, как и в общедоступном реестре.Я ожидаю, что файл ключа доступа JSON содержит все нужные мне фрагменты, даже если вначале происходит ритуальный обмен с Google.Я не могу найти информацию о том, как использовать содержимое, хотя.Это где-нибудь задокументировано?

Шаги для перехода от файла JSON служебной учетной записи к токену доступа OAuth на самом деле нигде не задокументированы Google.Проблема в том, что OAuth очень широк и содержит много функций и деталей реализации.Мы узнали, как это сделать, изучив исходный код в библиотеках.

Я написал статью, которая подробно описывает это и включает в себя рабочий код Python.В этой статье приведен пример выполнения вызовов REST API.Другие статьи на моем сайте также содержат примеры выполнения вызовов REST API с помощью токенов доступа OAuth.

Google Cloud - Создание маркеров доступа OAuth для вызовов API REST

Процесс выглядит какна первый взгляд сложный, но очень легко понять, как только вы освоите все.

В моей статье рассказывается, как выполнить следующие шаги для перехода от JSON к OAuth-токену к REST API.

  • Как загрузить учетные данные учетной записи службы из файла Json.
  • Как извлечь закрытый ключ, используемый для подписи запросов.
  • Как создать JWT (Json Web Token) для Google Oauth2.0.
  • Как установить Google Scopes (разрешения).
  • Как подписать JWT для создания Подписанного JWT (JWS).
  • Как обменять Подписанное-JWT для токена доступа Google OAuth 2.0.
  • Как установить срок действия.Эта программа по умолчанию составляет 3600 секунд (1 час).
  • Как вызвать API Google и установить заголовок авторизации.
...