AADTS900144: текст запроса должен содержать следующий параметр: «grant_type» с Microsoft Defender для API конечной точкиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 AADTS900144: текст запроса должен содержать следующий параметр: «grant_type» с Microsoft Defender для API конечной точки

Сообщение Anonymous »

Я пытаюсь пройти аутентификацию с помощью службы API Endpoint в Microsoft Defender, следуя этой обучающей статье:
https://learn.microsoft.com/en-us/microsoft-365/ Security/defender-endpoint/run-advanced-query-sample-python?view=o365-worldwide#get-token
Обычно я использую библиотеку запроса для вызовов REST, поэтому я не совсем следовал приведенному выше фрагменту кода. При запуске моей версии приведенного выше кода:

Код: Выделить всё

import json

import requests

MDE_CLIENT_ID = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX'
MDE_CLIENT_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
TENANT_ID = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX'
AUTHORITY = 'https://login.microsoftonline.com/'
MDE_URI = 'https://api.securitycenter.microsoft.com'

class RESTError(Exception):
def __init__(self, status_code, message):
self.status_code = status_code
self.message = str(self.status_code) + ' ' + json.dumps(message)
super().__init__(self.message)

def authenticate_mde():
headers = {
'content-type': 'application/x-www-form-urlencoded'
}
body = {
'resource': MDE_URI,
'client_id': MDE_CLIENT_ID,
'client_secret': MDE_CLIENT_SECRET,
'grant_type': 'client_credentials'
}
response = requests.post(AUTHORITY + TENANT_ID + '/oauth2/token', data = json.dumps(body), headers = headers)

if (response.status_code < 200 or response.status_code > 299):
raise RESTError(response.status_code, response.json())

return response.json()['access_token']

def main():
token = authenticate_mde()
print(token)

if (__name__ == '__main__'):
main()
Когда я запускаю этот код, я получаю ошибку 400 от службы аутентификации с жалобой на отсутствие параметра тела «grant_type». Однако, как вы можете видеть в коде, он явно включен таким же образом, как и фрагмент кода из MSFT.

Код: Выделить всё

Traceback (most recent call last):
File "C:\Users\24724\Documents\code\python\scripts\mde-executor.py", line 42, in 
main()
File "C:\Users\24724\Documents\code\python\scripts\mde-executor.py", line 38, in main
token = authenticate_mde()
File "C:\Users\24724\Documents\code\python\scripts\mde-executor.py", line 32, in authenticate_mde
raise RESTError(response.status_code, response.json())
__main__.RESTError: 400 {"error": "invalid_request", "error_description": "AADSTS900144: The request body must contain the following parameter: 'grant_type'.\r\nTrace ID: e4d0d06e-aae6-4b6d-80e2-2b3997f74302\r\nCorrelation ID: 5788089d-f94e-4e9a-8667-d6e36c183af8\r\nTimestamp: 2023-01-06 17:00:23Z", "error_codes": [900144], "timestamp": "2023-01-06 17:00:23Z", "trace_id": "e4d0d06e-aae6-4b6d-80e2-2b3997f74302", "correlation_id": "5788089d-f94e-4e9a-8667-d6e36c183af8", "error_uri": "https://login.microsoftonline.com/error?code=900144"}
Я также попытался точно скопировать фрагмент кода MSFT и вставить свою собственную информацию о глобальной переменной, но получил ту же ошибку. Я попытался переместить тело в параметры URL, заголовки, разделив его на тело, параметры и заголовки. Не повезло. Я также пробовал разные типы контента в заголовке и пробовал без заголовков. Кажется, ничего не работает, и я в тупике.

Подробнее здесь: https://stackoverflow.com/questions/750 ... grant-type
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»