JWT-Token erstellen: So signieren Sie ihn richtig
Diese Funktion erstellt einen gültigen JWT-Token aus einer selbst definierten Payload und signiert ihn mit dem gewünschten Algorithmus und einem eigenen Schlüssel. Gedacht für Entwicklerinnen und Entwickler, die einen Test-Token für die lokale Entwicklung, eine Dokumentation oder einen manuellen API-Test brauchen.
Im Browser ausführen – kostenlos
Läuft direkt in Ihrem Browser – kostenlos. Ihre Datei verlässt Ihren Browser nicht und wird an keinen Server übertragen.
Payload eingeben und Token erhalten
Sie geben die gewünschten Claims als JSON ein – etwa Benutzer-ID, Rolle und Ablaufzeit – wählen den Algorithmus und den geheimen Schlüssel, und die Funktion liefert den fertigen, korrekt signierten JWT-Token zurück, bereit zum Einfügen in einen Authorization-Header oder einen Testaufruf.
Welche Algorithmen zur Verfügung stehen
Unterstützt werden die gängigen HMAC-basierten Verfahren HS256, HS384 und HS512, bei denen derselbe Schlüssel zum Signieren und Prüfen dient. Für Systeme mit asymmetrischer Signatur (RS256) empfiehlt sich stattdessen die serverseitige Bibliothek des jeweiligen Frameworks, da dort ein privater und ein öffentlicher Schlüssel getrennt verwaltet werden.
Typische Felder richtig setzen
Ein Ablaufzeitpunkt („exp“) gehört in praktisch jeden produktiven Token; ohne ihn bleibt ein Token unbegrenzt gültig, was ein Sicherheitsrisiko darstellt. Die Funktion errechnet „exp“ aus einer von Ihnen gewählten Gültigkeitsdauer, sodass Sie nicht selbst mit Unix-Zeitstempeln rechnen müssen.
Nicht für Produktionsschlüssel gedacht
Diese Funktion eignet sich für Test-Token in der Entwicklung, für Dokumentationsbeispiele oder für das manuelle Nachstellen einer Authentifizierung. Der von Ihnen eingegebene Schlüssel wird nicht gespeichert; für produktive Systeme sollte die Token-Ausstellung dennoch serverseitig im eigenen Code erfolgen, nicht über ein externes Werkzeug.
Anwendungsfälle
Test-Token für die lokale Entwicklung
Anna Hoffmann testet eine neue API-Route, die einen gültigen JWT-Token erwartet, und erstellt sich schnell einen Test-Token mit den passenden Rollen-Claims, statt dafür einen echten Login-Vorgang durchzuführen.
Beispiel-Token für die API-Dokumentation
Ein Entwicklerteam bei der Weber Metallbau GmbH stellt eine interne API bereit und fügt der Dokumentation ein Beispiel eines signierten Tokens bei, damit andere Teams den Aufbau der Payload nachvollziehen können.
Eine Authentifizierung manuell nachstellen
Ein Freiberufler debuggt eine Middleware, die JWT-Token prüft, und erstellt gezielt einen Token mit einer bereits abgelaufenen „exp“-Zeit, um zu testen, ob die Middleware abgelaufene Token korrekt zurückweist.
Häufige Fragen
Welche Signaturalgorithmen werden unterstützt?
HS256, HS384 und HS512 – alle drei nach dem HMAC-Verfahren mit einem gemeinsamen Schlüssel. Asymmetrische Verfahren wie RS256 gehören eher in die serverseitige Token-Ausstellung.
Wird der von mir eingegebene Schlüssel gespeichert?
Nein, zu keinem Zeitpunkt. Er dient ausschließlich der Berechnung dieses einen Tokens und wird danach nicht aufbewahrt.
Kann ich diese Funktion für echte Produktions-Token nutzen?
Sie eignet sich vor allem für Test-Token, Dokumentationsbeispiele und manuelle Prüfungen. Die Ausstellung von Produktions-Token gehört in den eigenen, serverseitigen Code.
Wie setze ich eine Ablaufzeit für den Token?
Sie wählen eine Gültigkeitsdauer, und die Funktion errechnet daraus automatisch das Feld „exp“ als Unix-Timestamp.
Muss ich mich anmelden?
Nein. Es gibt derzeit keine Konten – die Nutzung im Browser ist kostenlos und ohne Limit.
Was kostet die Nutzung über die API?
$0.002 pro Anfrage. Im Browser bleibt die Funktion unabhängig davon kostenlos.
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/dev/jwt-sign \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/dev/jwt-sign", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/jwt-sign",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/jwt-sign", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/jwt-sign", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"items": [
"valor-1",
"valor-2"
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.jwt_sign",
"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.
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. |