Ich kann die Gründe nicht verstehen, warum die Claims / Payload eines JWT nach der Base64-Dekodierung öffentlich sichtbar gemacht werden.
Warum?
Es scheint viel nützlicher zu sein, es mit dem Geheimnis verschlüsseln zu lassen.
Kann jemand erklären, warum oder in welcher Situation es sinnvoll ist, diese Daten öffentlich zu halten?
security
json
authentication
jwt
Ich brauche Hilfe
quelle
quelle
Antworten:
Sie entscheiden sich aus den gleichen Gründen dafür, die Nutzdaten nicht zu verschlüsseln, wie Sie sich dafür entscheiden, nichts anderes zu verschlüsseln: Die Kosten (wie gering sie auch sein mögen) übersteigen den Nutzen, und viele Daten müssen einfach nicht auf diese Weise gesichert werden.
Was Sie am meisten schützen müssen, ist, dass Menschen die Daten manipulieren, damit der falsche Datensatz aktualisiert wird, oder dass jemandes Girokonto Geld einbringt, das es eigentlich nicht haben sollte. Dies wird durch die Signatur des JSON-Web-Tokens erreicht, da das Paket ungültig wird, wenn ein Teil der Kombination aus Header, Nutzlast und Signatur geändert wird.
Beachten Sie, dass Sie die Pakete auf der Transportebene weiterhin mit SSL sichern können.
quelle
Die Verwendung des Begriffs Signatur im RFC entspricht einer digitalen Signatur in der asymmetrischen Kryptographie. Wenn der Absender in der asymmetrischen Kryptografie eine Nachricht mit seinem privaten Schlüssel verschlüsselt, kann jeder, der über die Nachricht verfügt, sie mit dem öffentlichen Schlüssel des Absenders entschlüsseln. Das Ziel mit dem Begriff Signatur besteht also nicht darin, eine Nachricht geheim zu halten, sondern die Integrität / den Absender der Nachricht zu überprüfen, die nicht geändert wurde.
Bei JWTs ist das sendende System sowohl Ersteller als auch Verbraucher der Nachricht (siehe Abbildung unten). Ziel ist es sicherzustellen, dass das an den Benutzer weitergegebene Token nicht manipuliert wird (z. B. wenn ihm erhöhte Berechtigungen erteilt wurden).
Und wie @Robert bereits erwähnte, können / sollten die JWTs weiterhin mit TLS verschlüsselt werden.
Hier finden Sie eine gute Erklärung der JWTs und Signaturen, aus denen das folgende Bild stammt. 5 einfache Schritte zum Verständnis von JSON-Web-Token (JWT)
quelle
Um die Antwort von Robert Harveys zu ergänzen, ist die Verschlüsselung der Nutzdaten mit einem erheblichen Nachteil verbunden. Dies bedeutet, dass der Empfänger des Dienstes ein Geheimnis mit dem Authentifizierungsserver (dem Verschlüsselungsschlüssel) teilen muss, um zu verstehen, ob der Inhaber des Tokens berechtigt ist oder nicht oder nicht. Im Gegensatz dazu kann jeder eine JWT nur mit dem vom Authentifizierungsserver veröffentlichten öffentlichen Schlüssel validieren.
Dies ist ein wichtiger Bestandteil der openid connect-Spezifikation, da Clientanwendungen vom Authentifizierungsserver ausgegebene Identitätstoken validieren können und die Bereitstellung von Ressourcenservern vereinfacht wird (da sie nicht mit Zugriff auf die geheime Verschlüsselung bereitgestellt werden müssen) Schlüssel) und hilft auch bei der Diagnose von Problemen mit einem ausgegebenen JWT.
quelle