#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.
Надеюсь, это поможет!