Использование OAuth для аутентификации Jira REST API через прокси-сервер с использованием Python

#python #curl #proxy #jira #airflow

#python #curl #прокси #jira #воздушный поток

Вопрос:

Возникли проблемы с использованием OAuth creds для подключения к JIRA Server API через виртуальную машину из-за настроек прокси моей компании.

Я могу пройти аутентификацию с помощью OAuth и запустить свой скрипт локально без проблем.

Я также протестировал версию этого скрипта в cURL (ниже), которая работает должным образом, хотя и не соответствует стандартам безопасности моей компании, поскольку использует простую аутентификацию.

Документация JIRA не предоставляет ничего полезного, и я не нашел никакого решения на форумах Atlassian или StackOverflow, которое решало бы эту конкретную проблему.

Создание экземпляра объекта JIRA:

 jira_options={'server': 'https://jira.domain.com'}

oauth_dict = {
'access_token': access_token,
'access_token_secret': access_token_secret,
'consumer_key': consumer_key,
'key_cert': key_cert_data
}

jira = JIRA(options=jira_options, oauth=oauth_dict)
  

Вот функционирующий CURL с простой аутентификацией:

 curl --noproxy “*” -o /usr/local/airflow/data/jira_input.json -D- -u ‘ jira_client_email ‘:’ jira_client_key ' -X GET -H “Content-Type: application/json” “https://jira.domain.com/rest/api/2/search?jql=project=CCamp;updatedDate=-3damp;startAt=0amp;maxResults=3000”
  

Я ожидаю, что выходные данные вернут объект JIRA и позволят моей программе получить доступ к API JIRA.

Фактический результат, который я получаю, — это сообщение об ошибке ниже:

 [2019-03-27 15:03:23,907] {bash_operator.py:94} INFO - WARNING:root:HTTPSConnectionPool(host='jira.domain.com', port=443): Max retries exceeded with url: /rest/api/2/serverInfo (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f6e45ca5898>: Failed to establish a new connection: [Errno 110] Connection timed out',)) while doing GET https://jira.domain.com/rest/api/2/serverInfo [{'params': None, 'headers': {'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json,*.*;q=0.9', 'Connection': 'keep-alive', 'Cache-Control': 'no-cache', 'Content-Type': 'application/json', 'X-Atlassian-Token': 'no-check'}}]
  

Ответ №1:

Если запросы вашей собственной операционной системы проходят через аутентифицированный прокси на базе Windows, вы могли бы использовать CNTLM на виртуальной машине.

В противном случае попробуйте соответствующим образом настроить переменные среды прокси на стороне виртуальной машины. Они будут использоваться в python requests pip.

Соответствующие переменные

  • HTTP_PROXY
  • HTTPS_PROXY
  • NO_PROXY