Запрос Python для авторизации API приложения через шлюз tyk - PullRequest
0 голосов
/ 14 марта 2019

Я работаю над скриптом Python (2.7.x), который пытается подключиться к стороннему API через шлюз tyk .Конечный 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» и токена токена под заголовком «Authorization», тогда запрос не пройдет авторизацию приложения.

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

Спасибо

заранее

1 Ответ

0 голосов
/ 14 марта 2019

Леонид из Тыка здесь.

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

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

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

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

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

...