Почтальон - аутентификация JWT с использованием файла ключа - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь использовать Postman для тестирования API, разработанного на Google Cloud Platform: App Engine за конечной точкой API.
У меня есть файл ключа в формате JSON:

{
  "type": "service_account",
  "project_id": "[[my_project_name]]",
  "private_key_id": "[[private_key_id]]",
  "private_key": "-----BEGIN PRIVATE KEY-----\n[[private_key]]\n-----END PRIVATE KEY-----\n",
  "client_email": "[[service_account_email]]",
  "client_id": "",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/[[service_account_email]]"
}

И Я могу получить токен доступа, используя python код:

import time
import google.auth.crypt
import google.auth.jwt

sa_keyfile='[[path_to_the_api_key_file]]'
sa_email='[[service_account_email]]'
audience='[[my_api_url]]'
expiry_length=3600
now = int(time.time())
payload = {
    'iat': now,
    "exp": now + expiry_length,
    'iss': sa_email,
    'aud':  audience,
    'sub': sa_email,
    'email': sa_email
}

signer = google.auth.crypt.RSASigner.from_service_account_file(sa_keyfile)
jwt = google.auth.jwt.encode(signer, payload)

print(jwt)

Если я установлю в Postman OAuth 2.0 в качестве метода аутентификации и вставлю полученный JWT как Access Token, тогда запрос работает нормально.

Я бы хотел перенести всю операцию с токеном JWT в Почтальон без необходимости заранее вызывать код Python. Я пытался использовать Get New Access Token из Почтальона, но ни один из вариантов не поддерживает файл ключа JSON.
Можно ли получить токен JWT из файла ключа JSON, используя только Почтальон?

Ответы [ 2 ]

2 голосов
/ 17 февраля 2020

Существует несколько способов авторизации пользователей в GCP. По сути, Google предпочитает использовать пары ключей, чтобы подписать запрос и отправить его в Google для проверки подлинности приложений и авторизации JWT, связанной с контекстом. Хотя существует множество вариантов, объясняющих, как сделать это на стороне сервера, вы должны знать, что эти учетные данные фактически позволяют вам получить доступ к самой платформе. По сути, это рабочий процесс oAuth, и JWT, вы можете получить разные источники, имеющие разные области видимости, что, в свою очередь, позволяет вам вызывать связанные с ними конечные точки.

Для почтальона вы следуете простому рабочему процессу oAuth, указанному в документации, который прямо вперед Создание идентификаторов клиентов

Конечно, вам нужно реализовать части сервера для вызова API платформы, так как они не должны быть представлены напрямую, поэтому дополнительная безопасность предоставляется для получения подписанных запросов при получении токенов платформы.

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

Предполагается, что вы используете OpenApi Спецификации как стандартный способ доступа к RESTFUL API. Google имеет обширную документацию по использованию специфицированного c провайдера аутентификации для использования своих услуг.

Выбор метода аутентификации

Каждый метод имеет свои плюсы и минусы и выбирает наиболее подходящий метод, который использует JWT с надлежащими привилегиями.

Другая документация может быть найдена здесь Документация по конечным точкам облака

0 голосов
/ 18 февраля 2020

Вы можете попробовать аутентификацию с помощью Oauth, делая HTTP-запросы с почтальоном. Процесс будет следующим:

  • Создайте JSON веб-токен самостоятельно, который включает в себя заголовок, набор заявок и подпись. (Для подписи потребуется закрытый ключ из ключа учетной записи службы. json файл)
  • Затем запросите токен доступа у сервера авторизации Google OAuth 2.0.
  • После этого получите токен доступа от JSON ответ, который возвращает
    Сервер авторизации.

Это объясняется в этой ссылке .

Я думаю, что это можно сделать. В любом случае, я не вижу в этом практического решения, если это нужно делать часто.

...