Запрос Python на авторизацию app api, выполненный через tyk gateway

#python #python-requests #tyk

#python #python-запросы #tyk

Вопрос:

Я работаю над скриптом Python (2.7.x), который пытается подключиться к стороннему API через tyk gateway. Конечный api ожидает токен аутентификации в заголовке запроса, и tyk также требует, чтобы в заголовке запроса присутствовал его собственный токен аутентификации.

Теперь проблема, с которой я сталкиваюсь, заключается в:

Когда я пытаюсь отправить запрос к стороннему приложению через tyk, приложение не распознает токен аутентификации, переданный в заголовке.Из отладки я смог выяснить, что tyk не передает заголовок аутентификации приложению.

Я использую следующий фрагмент кода для выполнения запроса

 request.post("https://myurl.com", 
   data={"data": data_a},
   headers={"Authorization": "Basic <TYK_TOKEN>, Bearer <APP_TOKEN> })
  

Вещи, которые я пробовал:

  • Сначала попытался передать токен приложения, а затем токен tyk, тогда запрос не пройдет авторизацию tyk.
  • Попытался передать токен приложения отдельно в запросе, тогда запрос не пройдет авторизацию tyk.
  • Пытался передать токен приложения в заголовке «Application-Authorization» и токен tyk в заголовке «Authorization», тогда запрос не пройдет авторизацию приложения.

Пожалуйста, посоветуйте решение.

Спасибо

заранее

Ответ №1:

Леонид из Tyk здесь.

Таким образом, в основном ваш восходящий поток защищен токеном аутентификации, а ваш собственный API также защищен токеном.

Если у вашего стороннего API есть статический ключ api, вы можете просто вставлять его во все запросы в качестве глобального заголовка: введите описание изображения здесь

Если у вас есть динамический ключ третьей стороны, который варьируется для разных пользователей, вы можете встроить его в метаданные ключа, например, в поле «upstream_api_key», и добавить глобальный заголовок с динамическим значением: «$tyk_meta.upstream_api_key». введите описание изображения здесь

Если вашему пользователю необходимо передать этот токен, и вам нужно переслать его в upstream, аутентификация Tyk и Upstream должна выполняться в разных заголовках HTTP.

Надеюсь, это поможет!