JWT-Token erstellen: So signieren Sie ihn richtig
Erstellen Sie ein signiertes JWT aus eigenen Angaben: Geben Sie ein Subjekt, eine Rolle wie admin und ein gemeinsames Geheimnis an, und Sie erhalten ein fertiges HS256-Token, oder signieren Sie mit einem privaten Schlüssel per RS256. Ihr Schlüssel wird einmal genutzt und dann verworfen. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Wann es sinnvoll ist, ein Token selbst zu signieren
Vollständige Identitätsanbieter gibt es für die Anmeldung von Nutzern, doch viel legitime Arbeit findet außerhalb davon statt: Aufrufe zwischen Diensten, die ein kurzlebiges Token brauchen, Testumgebungen mit einem Token für eine bestimmte Rolle, Skripte in der Staging-Umgebung, die einen Mandanten nachstellen, um einen Fehler zu reproduzieren, und interne Werkzeuge mit befristetem, eng begrenztem Zugriff. Dafür einen ganzen Authentifizierungsserver aufzusetzen, ist übertrieben; ein einzelner Signiervorgang nicht. Wichtig sind die Details: Ein falsches Ablaufformat oder eine fehlende Zielgruppe kann alle nachgelagerten Dienste lahmlegen.
HS256 oder RS256 und was mit Ihrem Schlüssel geschieht
HS256 signiert und prüft mit demselben gemeinsamen Geheimnis, was einfach ist, wenn ein Dienst oder eine kleine vertraute Gruppe beide Enden kontrolliert. RS256 signiert mit einem privaten Schlüssel, und jeder kann mit dem öffentlichen prüfen, ideal, wenn mehrere unabhängige Dienste Tokens kontrollieren sollen, ohne das Geheimnis je zu besitzen. Ihr Schlüssel dient nur diesem einen Vorgang und wird danach verworfen, weder protokolliert noch wiederverwendet. Strukturell ungültige Angaben, etwa ein Ablauf, der keine Zahl ist, werden vor dem Signieren abgelehnt. Den Ablauf geben Sie in Sekunden an; ohne ihn läuft das Token nie ab.
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
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.
Verwandte Tools
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 '{"payload":{"sub":"user_1"},"secret":"s3cr3t"}'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({
"payload": {
"sub": "user_1"
},
"secret": "s3cr3t"
})
});
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={
"payload": {
"sub": "user_1"
},
"secret": "s3cr3t"
},
)
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" => '{"payload":{"sub":"user_1"},"secret":"s3cr3t"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"payload":{"sub":"user_1"},"secret":"s3cr3t"}`)
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
{
"payload": {
"sub": "user_1"
},
"secret": "s3cr3t"
}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. |
Technische Hinweise
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.
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.
Integrationsbeispiele
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.
Technische Fragen
Was kostet die Nutzung über die API?
$0.002 pro Anfrage. Im Browser bleibt die Funktion unabhängig davon kostenlos.