Bezpečnostný model
Dve rodiny tokenov, prísne oddelené algoritmom aj účelom: RS256 používateľské tokeny vydávané vydávajúcimi aplikáciami a overované všade verejným PEM kľúčom, a HS256 servisné tokeny výhradne na komunikáciu medzi službami. Navyše:
- Pripnutie jediného algoritmu — alg:none ani zámena RS256↔HS256 nie sú štrukturálne možné.
- Porovnanie HMAC v konštantnom čase.
- Odmietnutie PEM ako HMAC tajomstva — verejný kľúč sa nikdy nedá podstrčiť ako HMAC tajomstvo.
- HMAC tajomstvo musí mať aspoň 32 náhodných bajtov (256 bitov); jeden opakovaný bajt sa odmietne.
- RSA kľúče sa kontrolujú na typ a veľkosť — aspoň 2048 bitov.
- Povinné pripnutie iss/aud — prázdny pin je tvrdá chyba konfigurácie, nikdy prázdna zhoda.
- Leeway pre posun hodín pri každom volaní, bez globálneho stavu.
- Hlavička crit sa odmietne; prítomný typ musí byť JWT (explicitné typovanie podľa RFC 8725).
- Každý token nad 8 KB sa odmietne ešte pred dekódovaním.
- Fail-closed denylist — token bez jti sa pri zapnutom denyliste nikdy neprihlási.
- Registrované claimy majú vždy prednosť pred doplnkovými — pri používateľských tokenoch ich prepíšu, pri servisných sa doplnkové odmietnu — takže nepodvrhnú identitu.
- Chyba konfigurácie vždy skončí ako 500 — chýbajúci kľúč či tajomstvo sa nikdy nevydáva za tiché 401.
Žiadna kryptografia tretích strán
JOSE jadro — podpisovanie a overovanie kompaktného JWS, base64url, práca s RSA a HMAC kľúčmi — pochádza z nášho vlastného crypto-for-laravel, postaveného na ext-openssl a hash_hmac priamo v PHP. Tento balík zodpovedá za JWT politiku: claimy, guardy, denylist a väzbu vydavateľa servisných tokenov. Chyby kryptografie sa prekladajú na hranici balíka, takže zachytávate len jeho vlastné výnimky.
Kompatibilita so štandardom
Kompatibilitu overovania so štandardnými JWS/JWT tokenmi dokazujú uložené statické fixtures a príkladové vektory z RFC 7515, bez jedinej JWT či kryptografickej knižnice tretej strany v composer.json. Architektonické testy strážia, aby src/ nezávisel od externých JWT knižníc a aby balík neimplementoval vlastné kryptografické primitívy.
Mimo rozsahu
Balík zámerne neimplementuje rotáciu refresh tokenov, generovanie 2FA kódov, passkeys, získavanie vzdialených kľúčov, výber z viacerých kľúčov podľa kid, ES256/EdDSA, šifrovanie JWE ani introspekciu tokenov. Tokeny vydáva a overuje — a vlastný kľúč zverejní cez Jwt::jwks() na route, ktorú si definujete.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.