0

У меня есть код, в котором я пытаюсь пройти проверку подлинности API-интерфейса REST API Azure.Запросы на Python - API Azure RM возвращает 200 статусных кодов, но 400 в контенте

import json 
import requests 

tenant_id = "TENANT_ID" 
app_id = "CLIENT_ID" 
password = "APP_SECRET" 

token_endpoint = 'http://login.microsoftonline.com/%s/oauth2/token' % tenant_id 
management_uri = 'https://management.core.windows.net/' 

payload = { 'grant_type': 'client_credentials', 
      'client_id': app_id, 
      'client_secret': password 
} 

auth_response = requests.post(url=token_endpoint, data=payload) 
print auth_response.status_code 
print auth_response.reason 

Это возвращает:

200 
OK 

Однако, когда я печатаю auth_response.content или auth_reponse.text, я получаю обратно код ошибки 400 HTML и сообщение об ошибке.

HTTP Error Code: 400 
Sorry, but we’re having trouble signing you in. 
We received a bad request. 

Я могу получить правильную информацию, используя PostMan, однако, с тем же URI и полезной нагрузкой. Я использовал параметр «Создать код» в Postman для экспорта моего запроса на скрипт запросов Python и попытался выполнить его. Но я получаю те же ошибки.

У кого-нибудь есть идеи, почему это происходит?

ответ

1

изменить только ваши token_endpoint в https протоколы. E.G: token_endpoint = 'https://login.microsoftonline.com/%s/oauth2/token' % tenant_id. Для получения более подробной информации вы можете обратиться к https://msdn.microsoft.com/en-us/library/azure/dn645543.aspx.

В то же время вы можете использовать Microsoft Azure Active Directory Authentication Library (ADAL) for Python для получения токена доступа в непринужденной обстановке.

1

Вы должны использовать HTTPS вместо HTTP для token_endpoint, и вы также должны указать версию API. Вот что вы должны использовать.

token_endpoint = 'https://login.microsoftonline.com/%s/oauth2/token?api-version=1.0' % tenant_id