Создание токена доступа в Консоли MDR

Чтобы создать токен доступа:

  1. В окне Консоли MDR выберите пункт меню Параметры.
  2. Перейдите на вкладку API.

    Отобразится список Все токены. Каждая строка соответствует одному токену. Можно щелкнуть в любом месте строки, чтобы посмотреть информацию о токене.

  3. Выберите токен со статусом Ожидает активации.

    Отобразится раздел Данные токена.

  4. В поле Токен JWT нажмите на кнопку Обновить.

    Отобразится токен обновления.

  5. Выделите и сохраните значение поля Идентификатор клиента.
  6. Выделите и скопируйте последовательность символов токена в буфер обмена.
  7. Отправьте запрос POST на конечную точку /session/confirm (см. пример ниже).

    Замените {client_id} и {refresh_token} значениями, выбранными и сохраненными на предыдущих шагах.

Пример (Python):

 

###################################################

# Общая часть

###################################################

 

import time

import datetime

import requests

import jwt

 

# Сертификат необходим для аутентификации внешнего ресурса.

# Вы можете скачать сертификат с https://mdr.kaspersky.com.

# Сохраните сертификат на свой диск и добавьте путь к сертификату в переменной:

VERIFY_CERT_PATH = "C:\\tools\\DigiCert Global Root G2.crt"

 

# MDR REST API URL:

API_URL = "https://mdr.kaspersky.com/api/v1"

 

# Ваш идентификатор клиента и ваши токены.

# Подробнее о получении идентификатора и токенов см. в справке https://support.kaspersky.com/MDR/ru-RU/258285.htm.

CLIENT_ID = "9ed43ed54sAmpleIdf349323951f" # (Вставьте ваше значение)

REFRESH_TOKEN = "ReFrEsHToKeN" # (Вставьте ваше значение)

ACCESS_TOKEN = "AcCeSsToKeN" # (Вставьте ваше значение)

 

 

###################################################

# Получение токена доступа и токена обновления для следующего обновления токена доступа

###################################################

 

if REFRESH_TOKEN:

refresh_token_exp = jwt.decode(REFRESH_TOKEN, options={"verify_signature": False}).get("exp")

print(f"REFRESH_TOKEN дата и время истечения срока действия: {datetime.datetime.fromtimestamp(refresh_token_exp)}")

if refresh_token_exp > time.time():

print("REFRESH_TOKEN действительный")

else:

print(

"Вам нужно обновить REFRESH_TOKEN. Возьмите его из Консоли MDR (https://support.kaspersky.com/MDR/ru-RU/258285.htm)."

)

exit()

else:

print(

"Вам нужно заполнить значение REFRESH_TOKEN. Возьмите его из Консоли MDR (https://support.kaspersky.com/MDR/ru-RU/258285.htm)."

)

exit()

 

# Проверьте наличие и срок действия токена доступа.

need_update_access_token = False

if ACCESS_TOKEN:

access_token_exp = jwt.decode(ACCESS_TOKEN, options={"verify_signature": False}).get("exp")

print(f"ACCESS_TOKEN дата и время истечения срока действия: {datetime.datetime.fromtimestamp(access_token_exp)}")

if access_token_exp > time.time():

print("ACCESS_TOKEN действительный")

else:

need_update_access_token = True

else:

need_update_access_token = True

 

# При необходимости обновите токен доступа и токен обновления для следующего обновления токена доступа.

access_token = ACCESS_TOKEN

if need_update_access_token:

request_body = {"refresh_token": REFRESH_TOKEN}

result = requests.post(url=f"{API_URL}/{CLIENT_ID}/session/confirm", json=request_body, verify=VERIFY_CERT_PATH)

result_json = result.json()

 

if "error" in result_json:

print(result_json)

exit()

 

# Необходимо сохранить токен обновления, чтобы получить следующий токен доступа после истечения срока действия текущего токена доступа

refresh_token = result_json["refresh_token"]

print(

f'!!! Ваш новый REFRESH_TOKEN для следующего запроса ACCESS_TOKEN (замените значение REFRESH_TOKEN значением): "{refresh_token}"'

)

 

# Требуется новый токен доступа для получения данных

access_token = result_json["access_token"]

print(f'!!! Ваш новый ACCESS_TOKEN (замените значение ACCESS_TOKEN значением): "{access_token}"')

 

# Токен доступа добавлен в заголовок запроса.

headers = {"Authorization": f"Bearer {access_token}"}

 

Пример (Shell):

curl -X POST https://mdr.kaspersky.com/api/v1/{client_id}/session/confirm -H "Content-Type: application/json" -d '{"refresh_token": "{refresh_token}"}'

REST API отправляет действие по реагированию с токеном доступа и новым токеном обновления:

{

"access_token": "SamPLET346yoKEnSamPLEToK25EnSamPLEToK35EnS",

"refresh_token": "tOKenSaMPlet259OKenS123aMPle926tOKenSaMPle"

}

Теперь можно отправлять запросы в REST API, используя токен доступа. Для каждого запроса к REST API требуется токен доступа; в ответ на запрос без токена доступа возвращается только ошибка авторизации.

См. также:

Сценарий: авторизация на основе токенов

В начало