JWCrypto implementiert die JOSE-Familie auf Basis von pyca/cryptography: JWK und JWK-Sets, JWS, JWE und JWT. Alles basiert auf Schlüsselobjekten – einem jwk.JWK, gebaut aus PEM, JSON oder generate() –, sodass der Schlüsseltyp bei jedem Aufruf explizit ist. Die Bibliothek steht unter der Lizenz LGPL-3.0-or-later, was eine Rolle spielt, wenn du veränderte Kopien weitergibst.
Unter den JOSE-Bibliotheken für Python hat JWCrypto den breitesten Algorithmusumfang: die Familien HS, RS, PS und ES, ES256K, EdDSA und die vollständig spezifizierten Ed25519 und Ed448 sowie in Version 1.6.1 auch ML-DSA-44, ML-DSA-65 und ML-DSA-87 mit Schlüsseln vom Typ AKP aus dem Entwurf für Post-Quanten-JOSE – mit allen funktionierten in der Prüfung Signieren und Prüfen, und alle stehen auf der Standardliste der zulässigen Algorithmen. Genau diese Standardliste ist der Haken: Wenn du algs nicht übergibst, wird jeder davon für einen passenden Schlüssel akzeptiert; schränke die Liste also auf das ein, was dein Aussteller tatsächlich verwendet, wie es das Beispiel tut.
Unsignierte Tokens werden mit Algorithm not allowed abgelehnt, sofern none nicht aufgeführt ist, und ein HS256-Token, das mit einem öffentlichen EC-JWK geprüft wird, scheitert, weil dieser Schlüsseltyp kein HMAC ausführen kann. ES256 lehnt einen P-384-Schlüssel mit Curve requested is "P-256", but key curve is "P-384" ab. ES256-Signaturen haben die 64 Byte lange rohe Form r‖s; eine DER-Signatur scheitert mit Verification failed for all signatures – prüfe die Kodierung im JWT-Debugger.
Zwei Standardeinstellungen weichen von anderen Bibliotheken ab. Die Ablaufprüfung lässt 60 Sekunden Uhrenabweichung zu: Ein Token, das 57 Sekunden zuvor abgelaufen war, galt noch als gültig, eines, das 63 Sekunden zuvor abgelaufen war, nicht – nachsichtiger als PyJWT oder jose, die keine Abweichung zulassen. Und exp ist optional: Ein Token ohne diesen Claim galt als gültig, sofern check_claims ihn nicht nennt.
Stelle Schlüsselsätze mit dem JWKS-Builder zusammen und untersuche verschlüsselte Tokens mit dem JWE-Inspektor; für ML-DSA-Schlüssel und -Signaturen zeigt der Playground für Post-Quanten-Signaturen die jeweiligen Größen.