Аутентификация Pub / Sub-запроса в качестве службы (или по служебному ключу) вместо временного ключа Auth0 - PullRequest
1 голос
/ 13 февраля 2020

Постановка проблемы:

Я хочу использовать запросы на основе REST в google pub / sub (используя org. apache .http.client.methods.HttpPost) для публикации и подписки на сообщение, здесь я следующий запрос на публикацию данных в паб / sub topi c (https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions/pull)

POST https://pubsub.googleapis.com/v1/projects/[project_name]/topics/[topic_id]?key=[YOUR_API_KEY] HTTP/1.1

Authorization: Bearer [YOUR_ACCESS_TOKEN]
Accept: application/json
Content-Type: application/json

Здесь вместо [YOUR_API_KEY] я поставил ключ API от https://console.cloud.google.com/apis/credentials, которые дают ответ как неавторизованный

{
  "error": {
    "code": 403,
    "message": "User not authorized to perform this action.",
    "status": "PERMISSION_DENIED"
  }
}

, и если я добавляю токен доступа, полученный из следующей команды

gcloud auth application-default print-access-token

, токен действителен только для ограниченная продолжительность 60 минут. В связи с этим мне приходится создавать access_token каждый час.

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

Может кто-нибудь предложить или указать на любые ошибки. Заранее спасибо

1 Ответ

1 голос
/ 13 февраля 2020

В вашем случае связь между производственным сервером и сервером при использовании клиентской библиотеки Google Cloud Platform. Наилучший подход к аутентификации - это использовать стратегию под названием «Учетные данные приложения по умолчанию» (AD C), чтобы найти учетные данные вашего приложения.

При использовании клиентской библиотеки стратегия проверяет ваши учетные данные в следующем порядке:

1) AD C проверяет, установлена ​​ли переменная среды GOOGLE_APPLICATION_CREDENTIALS. Если переменная установлена, AD C использует файл учетной записи службы, на который указывает переменная.

2) Если переменная среды GOOGLE_APPLICATION_CREDENTIALS не задана, AD C использует учетную запись службы по умолчанию, которую предоставляют функции Compute Engine, Kubernetes Engine, Cloud Run, App Engine и Cloud для приложений, работающих на этих серверах. services.

3) Если AD C не может использовать ни один из вышеуказанных учетных данных, возникает ошибка.

Для подробного объяснения вы должны просмотреть официальную документацию Настройка Аутентификация для межсерверных производственных приложений

...