JWT-Payload ohne Signaturprüfung dekodieren
Dieser JWT-Decoder zerlegt ein JSON Web Token in seine drei kompakten Segmente und liest das base64url-kodierte JSON aus Header und Payload.
Im Browser ausführen – kostenlos
Beide Bereiche werden als strukturierte Objekte ausgegeben, sodass Sie Claims, Kennungen, Zeitangaben, Aussteller, Zielgruppen und Algorithmusmetadaten leicht untersuchen oder weiterverarbeiten können. Die Signatur wird bewusst nicht geprüft. Die dekodierten Werte zeigen daher nur, was das Token behauptet, und beweisen nicht, wer es erstellt hat. Verwenden Sie das Ergebnis zur Fehlersuche, Entwicklung, Dokumentation und sorgfältigen Prüfung, niemals als Nachweis für Authentizität oder Berechtigung.
Verstehen Sie die Aussagekraft der Dekodierung
Ein JWT besteht gewöhnlich aus Header, Payload und Signatur, die durch Punkte verbunden sind. Die ersten beiden Segmente enthalten base64url-kodiertes JSON. Der Inhalt ist damit kompakt transportierbar, aber weder verschlüsselt noch verborgen. Diese Funktion zerlegt das eingegebene Token, dekodiert die ersten beiden Segmente als UTF-8, parst ihr JSON und gibt die resultierenden Header- und Payload-Objekte zurück. Das dritte Segment wird nicht zur Authentifizierung verwendet. Dieser Unterschied ist entscheidend, denn jeder kann eine tokenähnliche Zeichenfolge mit beliebigen Claims erstellen. Ein Betreff, eine Rolle, ein Aussteller, eine Zielgruppe oder ein Ablaufwert im dekodierten Payload beweist nicht, dass ein vertrauenswürdiges System das Token ausgestellt hat. Nutzen Sie die Dekodierung, um die Tokenstruktur sichtbar zu machen, Claim-Namen und -Werte zu untersuchen oder während der Entwicklung eine lesbare Darstellung zu erhalten. Wenn eine Sicherheitsentscheidung vom Token abhängt, verwenden Sie eine geeignete JWT-Prüfbibliothek mit einem ausdrücklich vertrauenswürdigen Schlüssel sowie festen Vorgaben für Algorithmus, Aussteller und Zielgruppe.
Geben Sie ein kompaktes JWT ein und lesen Sie die Antwort
Fügen Sie das vollständige kompakte JWT in das Feld token ein. Ein strukturell gültiges Token hat genau drei Segmente, die durch zwei Punkte getrennt sind, obwohl dieser Decoder nur die ersten beiden liest. Die Antwort enthält ein header-Objekt und ein payload-Objekt. Typische Header-Felder sind typ für den JWT-Medientyp und alg für den behaupteten Signaturalgorithmus. Häufige Payload-Felder sind sub für das Subjekt, iss für den Aussteller, aud für die Zielgruppe, exp für die Ablaufzeit sowie anwendungsspezifische Claims. Der Decoder verlangt keinen bestimmten Claim und erhält vorhandene JSON-Werte unverändert. NumericDate-Claims wie exp, nbf und iat bleiben Zahlen und werden nicht in Datumsangaben umgewandelt. So wird nicht vorweggenommen, wie Sie diese anzeigen oder vergleichen möchten. Bei einer falschen Segmentzahl, fehlerhaftem base64url, ungültigem UTF-8 oder JSON sowie bei einem dekodierten Bereich, der kein Objekt ist, liefert die Anfrage einen Fehler für ungültige Eingaben statt eines unvollständigen Ergebnisses.
Verwenden Sie dekodierte Claims sicher
Die Dekodierung ist besonders an Systemgrenzen nützlich. API-Entwickler können die Claims eines Identitätsanbieters mit den von einer Anwendung erwarteten Namen vergleichen. Der Support kann ein bereinigtes Test-Token untersuchen, um eine fehlende Zielgruppe oder einen fehlenden Scope zu erkennen. Eine Testsuite kann lokal erzeugte Fixture-Tokens dekodieren und erforderliche benutzerdefinierte Claims prüfen, bevor die kryptografische Verifikation separat getestet wird. Halten Sie die Sicherheitsgrenze in jedem Ablauf ausdrücklich fest: Dekodierte Daten sind nicht vertrauenswürdige Eingaben. Gewähren Sie keinen Zugriff, wählen Sie keinen Tenant, akzeptieren Sie keine Identität und geben Sie keine privaten Daten allein aufgrund eines dekodierten Claims frei. Kopieren Sie echte Bearer-Tokens nicht in Logs, Tickets, Chats oder gemeinsame Dokumente, denn ein JWT kann trotz harmlos wirkendem Payload eine aktive Zugangsinformation sein. Verwenden Sie zur Fehlersuche vorzugsweise synthetische, abgelaufene oder lokal erzeugte Beispiele. Muss eine Automatisierung echte Tokens verarbeiten, übertragen Sie diese ausschließlich über einen angemessen geschützten Kanal und führen Sie anschließend eine Prüfung mit vertrauenswürdiger Konfiguration durch.
Anwendungsfälle
Claims eines Identitätsanbieters untersuchen
Vergleichen Sie Struktur, Claim-Namen, Zielgruppen, Scopes und Kennungen mit der Konfiguration Ihrer Anwendung.
Lokale Test-Tokens kontrollieren
Dekodieren Sie Fixture-Tokens in Tests oder Skripten und bestätigen Sie erwartete Claims, bevor Sie die Signatur separat prüfen.
Die Tokenstruktur erläutern
Wandeln Sie ein kompaktes JWT für Dokumentation, Schulung oder Fehlersuche mit synthetischen Beispielen in lesbare JSON-Objekte um.
Häufige Fragen
Prüft dieses Werkzeug die JWT-Signatur?
Nein. Es dekodiert nur Header und Payload. Behandeln Sie alle Felder als nicht vertrauenswürdig, bis Signatur und erforderliche Claims geprüft wurden.
Was kostet die Nutzung?
Der API-Preis beträgt $0.002 pro Anfrage. Die Browserversion kann dieselbe deterministische Dekodierungslogik lokal ausführen.
Warum benötigt das Token drei Segmente?
Die kompakte JWT-Darstellung umfasst Header, Payload und Signatur, getrennt durch Punkte. Andere Strukturen werden abgelehnt.
Werden Ablaufzeiten in Datumswerte umgewandelt?
Nein. Werte wie exp, nbf und iat werden exakt wie im Payload ausgegeben, damit Sie sie nach Ihren Anforderungen interpretieren können.
Kann ich ein unsigniertes JWT dekodieren?
Auch ein kompaktes ungesichertes Token benötigt drei Segmente; das dritte darf leer sein. Header und Payload werden ohne Sicherheitsbewertung dekodiert.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/web/jwt-decode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.c2lnbmF0dXJl"}'const res = await fetch("https://api.kit.forhosting.com/web/jwt-decode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.c2lnbmF0dXJl"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/jwt-decode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.c2lnbmF0dXJl"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/jwt-decode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.c2lnbmF0dXJl"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.c2lnbmF0dXJl"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/jwt-decode", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.c2lnbmF0dXJl"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.jwt_decode",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
timeout_sec | 30 |
max_crawl_pages | 25 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |