Пример (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}"}
|