Esempio (Python):
###################################################
# Parte generale
###################################################
import time
import datetime
import requests
import jwt
# Il certificato è richiesto per l'autenticazione di una risorsa esterna
# È possibile scaricare il certificato da https://mdr.kaspersky.com,
# salvarlo sul disco e aggiungere il percorso nella variabile:
VERIFY_CERT_PATH = "C:\\tools\\DigiCert Global Root G2.crt"
# MDR REST API URL:
API_URL = "https://mdr.kaspersky.com/api/v1"
# L'ID del client e i token.
# Per i dettagli su come ottenere l'ID e i token, fare riferimento alla guida https://support.kaspersky.com/MDR/it-IT/258285.htm
CLIENT_ID = "9ed43ed54sAmpleIdf349323951f" # (Incollare il valore)
REFRESH_TOKEN = "ReFrEsHToKeN" # (Incollare il valore)
ACCESS_TOKEN = "AcCeSsToKeN" # (Incollare il valore)
###################################################
# Ottenere il token di accesso e un token di aggiornamento per l'aggiornamento successivo del token di accesso
###################################################
if REFRESH_TOKEN:
refresh_token_exp = jwt.decode(REFRESH_TOKEN, options={"verify_signature": False}).get("exp")
print(f"REFRESH_TOKEN data e ora di scadenza : {datetime.datetime.fromtimestamp(refresh_token_exp)}")
if refresh_token_exp > time.time():
print("REFRESH_TOKEN è attuale ")
else:
print(
" Bisognerebbe aggiornare REFRESH_TOKEN .Prelevarlo dalla Console MDR (https://support.kaspersky.com/MDR/it-IT/258285.htm) . "
)
exit()
else:
print(
" Sarebbe opportuno inserire il valore REFRESH_TOKEN.Prelevarlo dalla Console MDR (https://support.kaspersky.com/MDR/it-IT/258285.htm) . "
)
exit()
# Verificare la presenza e la validità del token di accesso
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 data e ora di scadenza: {datetime.datetime.fromtimestamp(access_token_exp)}")
if access_token_exp > time.time():
print("ACCESS_TOKEN è attuale ")
else:
need_update_access_token = True
else:
need_update_access_token = True
# Se necessario, aggiornare il token di accesso e aggiornare il token per il prossimo aggiornamento del token di accesso
access_token = ACCESS_TOKEN
se 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()
# È necessario salvare il token di aggiornamento per ottenere il token di accesso successivo alla scadenza del token di accesso corrente
refresh_token = result_json["refresh_token"]
print(
f' !!! Il nuovo REFRESH_TOKE N per l'orario successivo per la richiesta ACCESS_TOKE N (sostituire il valore di REFRESH_TOKE N con questo valore ): "{refresh_token}" '
)
# È necessario un nuovo token di accesso per recuperare i dati
access_token = result_json["access_token"]
print(f' !!! Il nuovo ACCESS_TOKE N (ostituire il valore di ACCESS_TOKE N con questo valore) : "{access_token}"' )
# Il token di accesso viene aggiunto all'intestazione della richiesta
headers = {"Authorization": f"Bearer {access_token}"}
|