Beispiel (Python):
###################################################
# Allgemeiner Teil
###################################################
import time
import datetime
import requests
import jwt
# Das Zertifikat wird für die Authentifizierung einer externen Ressource benötigt
# Sie können das Zertifikat von https://mdr.kaspersky.com herunterladen,
# es auf Ihrer Festplatte speichern und seinen Pfad der Variablen hinzufügen:
VERIFY_CERT_PATH = "C:\\tools\\DigiCert Global Root G2.crt"
# MDR REST API URL:
API_URL = "https://mdr.kaspersky.com/api/v1"
# ID Ihres Kunden und Ihres Tokens.
# Für Einzelheiten zum Abrufen Ihrer ID und der Token-ID siehe Hilfe https://support.kaspersky.com/MDR/de-DE/258285.htm
CLIENT_ID = "9ed43ed54sAmpleIdf349323951f" # (Fügen Sie Ihren Wert ein)
REFRESH_TOKEN = "ReFrEsHToKeN" # (Fügen Sie Ihren Wert ein)
ACCESS_TOKEN = "AcCeSsToKeN" # (Fügen Sie Ihren Wert ein)
###################################################
# Zugriffstoken und Aktualisierungstoken (refresh token) für das nächste Update des Zugriffstokens anfordern
###################################################
if REFRESH_TOKEN:
refresh_token_exp = jwt.decode(REFRESH_TOKEN, options={"verify_signature": False}).get("exp")
print(f"REFRESH_TOKEN Ablaufdatum und -uhrzeit : {datetime.datetime.fromtimestamp(refresh_token_exp)}")
if refresh_token_exp > time.time():
print("REFRESH_TOKEN ist aktuell ")
else:
print(
" Der REFRESH_TOKEN muss aktualisiert werden. Dieser ist in der MDR Console verfügbar (https://support.kaspersky.com/MDR/de-DE/258285.htm) . "
)
exit()
else:
print(
" Für den REFRESH_TOKEN muss ein Wert angegeben werden. Dieser ist in der MDR Console verfügbar (https://support.kaspersky.com/MDR/de-DE/258285.htm) . "
)
exit()
# Prüfung, ob ein Zugriffstoken (access token) vorhanden und gültig ist
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 Ablaufdatum und -uhrzeit: {datetime.datetime.fromtimestamp(access_token_exp)}")
if access_token_exp > time.time():
print("ACCESS_TOKEN ist aktuell ")
else:
need_update_access_token = True
else:
need_update_access_token = True
# Bei Bedarf Zugriffs- und Refresh-Tokens für das nächste Update des Zugriffstokens aktualisieren
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()
# Aktualisierungstoken muss gespeichert werden, um nach Ablauf des aktuellen Zugriffstokens den nächsten Zugriffstoken zu erhalten
refresh_token = result_json["refresh_token"]
print(
f' !!! Ihr neuer REFRESH_TOKEN für die nächste Anfrage eines ACCESS_TOKEN (ersetzen Sie den Wert für REFRESH_TOKEN durch diesen Wert): "{refresh_token}"'
)
# Neuer Zugriffstoken zum Datenabruf erforderlich
access_token = result_json["access_token"]
print(f' !!! Ihr neuer ACCESS_TOKEN (ersetzen Sie den Wert für ACCESS_TOKEN durch diesen Wert): "{access_token}"' )
# Zugriffstoken zum Request-Header hinzufügen
headers = {"Authorization": f"Bearer {access_token}"}
|