web-token/jwt-library
JWT library
4.1.7
19M downloads/mo
#450 most downloaded on Packagist
web-token/jwt-library
What this package is like to depend on
Last release 2 months ago
06 Jun 2026
Release timing varies
gaps range from 8 days to 6 months
Some releases are documented
notes for 10 of 33 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
33 releases · first in 2024
9 releases in the last 12 months
see the full history below
Release timeline
29 releases · Feb 2024 to Jun 2026Releases
latest 33-
4.1.706 Jun 2026 -
4.1.614 Apr 2026 -
4.1.518 Dec 2025 -
4.1.4no date -
4.1.3no date -
4.1.217 Nov 2025 -
4.1.117 Nov 2025 -
4.1.022 Oct 2025Nothing published for this version
-
4.0.706 Jun 2026Release notes
Open source →- 3.4.x:
Update signature tests for the protected-header "alg" requirement (#651)
Merge commit from fork
Merge commit from fork
Merge commit from fork
Merge commit from fork
Add sodium support for Base64 URL safe encoding/decoding (#644)
Allowpsr/cachev2 (#620)
Fix call function on null (#596)
Add RangeException to Base64UrlSafe (#577)
Add Base64UrlSafe utility and refactor code references (#576)
Conflicts:
composer.json
phpstan-baseline.neon
src/Bundle/DataCollector/JWECollector.php
src/Experimental/KeyEncryption/AESCTR.php
src/Experimental/KeyEncryption/Chacha20Poly1305.php
src/Experimental/Signature/Blake2b.php
src/Library/Console/GeneratorCommand.php
src/Library/Core/JWK.php
src/Library/Core/Util/Base64UrlSafe.php
src/Library/Encryption/Algorithm/ContentEncryption/AESCBCHS.php
src/Library/Encryption/Algorithm/ContentEncryption/AESGCM.php
src/Library/Encryption/Algorithm/KeyEncryption/AESGCMKW.php
src/Library/Encryption/Algorithm/KeyEncryption/AESKW.php
src/Library/Encryption/Algorithm/KeyEncryption/AbstractECDH.php
src/Library/Encryption/Algorithm/KeyEncryption/Dir.php
src/Library/Encryption/Algorithm/KeyEncryption/PBES2AESKW.php
src/Library/Encryption/Algorithm/KeyEncryption/RSA15.php
src/Library/Encryption/Algorithm/KeyEncryption/Util/ConcatKDF.php
src/Library/Encryption/Algorithm/KeyEncryption/Util/RSACrypt.php
src/Library/Encryption/Serializer/CompactSerializer.php
src/Library/Encryption/Serializer/JSONFlattenedSerializer.php
src/Library/Encryption/Serializer/JSONGeneralSerializer.php
src/Library/KeyManagement/Analyzer/ESKeyAnalyzer.php
src/Library/KeyManagement/Analyzer/HSKeyAnalyzer.php
src/Library/KeyManagement/Analyzer/OctAnalyzer.php
src/Library/KeyManagement/Analyzer/RsaAnalyzer.php
src/Library/KeyManagement/Analyzer/ZxcvbnKeyAnalyzer.php
src/Library/Signature/Algorithm/EdDSA.php
src/Library/Signature/Algorithm/HMAC.php
src/Library/Signature/Serializer/CompactSerializer.php
src/Library/Signature/Serializer/JSONFlattenedSerializer.php
src/Library/Signature/Serializer/JSONGeneralSerializer.php
src/Library/composer.json
tests/Bundle/JoseFramework/Functional/Encryption/JWECollectorTest.php
tests/Bundle/JoseFramework/Functional/KeyManagement/JWKLoaderTest.php
tests/Component/Encryption/RFC7520/A128KWAndA128GCMEncryptionWithCompressionTest.php
tests/Component/KeyManagement/JWKFactoryTest.php
- 3.4.x:
-
4.0.613 Aug 2025Nothing published for this version
-
4.0.505 Aug 2025Nothing published for this version
-
4.0.412 Mar 2025Nothing published for this version
-
4.0.303 Jan 2025Nothing published for this version
-
4.0.2no dateNothing published for this version
-
4.0.109 Jul 2024Nothing published for this version
-
4.0.024 Jun 2024Nothing published for this version
-
3.4.1006 Jun 2026Release notes
Open source →JWSVerifier::getAlgorithm() merged the protected and unprotected headers
with [...$protected, ...$unprotected]; with duplicate keys PHP keeps the
LAST value, so the attacker-controlled unprotected header could override
the integrity-protected "alg". Combined with HeaderCheckerManager (which
validates "alg" from the protected header), this is a TOCTOU
algorithm-confusion / downgrade vector (e.g. forcing HS256 against an RSA
public key, or HS512 -> HS256), and "alg" placed only in the unprotected
header bypassed the duplicate-parameter check entirely.Per RFC 7515 §4.1.1 "alg" MUST be integrity protected. getAlgorithm() now
reads "alg" exclusively from the protected header and rejects a JWS whose
"alg" is absent from (or present only outside) the protected header.Co-authored-by: Claude Opus 4.8 (1M context) [email protected]
-
3.4.917 Nov 2025 -
3.4.807 May 2025Nothing published for this version
-
3.4.702 Jul 2024Nothing published for this version
-
3.4.6no dateNothing published for this version
-
3.4.502 Jul 2024Nothing published for this version
-
3.4.424 Jun 2024Nothing published for this version
-
3.4.317 Apr 2024Nothing published for this version
-
3.4.217 Apr 2024Nothing published for this version
-
3.4.110 Apr 2024Nothing published for this version
-
3.4.009 Apr 2024Nothing published for this version
-
3.3.503 Apr 2024Nothing published for this version
-
3.3.424 Mar 2024Nothing published for this version
-
3.3.323 Mar 2024Nothing published for this version
-
3.3.222 Mar 2024Nothing published for this version
-
3.3.128 Feb 2024Nothing published for this version
-
3.3.022 Feb 2024Nothing published for this version