HS256 ist der einzige JWS-Algorithmus, den JWA mit „Required“ als Pflicht für Implementierungen kennzeichnet, und der Standard vieler Tutorials und Frameworks. Das 32-Byte-Tag wird mit dem Shared Secret über header.payload berechnet; bei der Prüfung wird es neu berechnet und in konstanter Zeit verglichen.
Schwache Secrets sind das Hauptproblem: RFC 7518 verlangt Schlüssel von mindestens der Hashlänge (256 Bit), doch Tokens, die mit kurzen Secrets oder Wörterbuch-Secrets wie secret signiert sind, lassen sich offline aus einem einzigen Token knacken (hashcat-Modus 16500, jwt_tool), danach stellt der Angreifer beliebige Tokens aus. Nutze 32 oder mehr zufällige Bytes, nie ein Passwort, und prüfe das Secret mit dem JWT-Secret-Checker.
HS256 passt, wenn derselbe Dienst Tokens ausstellt und prüft. Für Verifizierer bei Dritten, Microservices oder öffentliche Clients nutze einen asymmetrischen Algorithmus, damit Verifizierer nur einen öffentlichen Schlüssel besitzen, und lege den Algorithmus pro Schlüssel fest, um eine Verwechslung mit RS256 zu vermeiden.